Traditional-Frame
- ssh = spring + struts + hibernate
- ssm = spring + springmvc + MyBatis
全家桶
- 脚手架框架: springboot
- 微服务框架: springCloud
简介
- Spring 是分层的full-stack(全栈)轻量级的框架, 以IOC和AOP为核心, 提供展现Spring mvc 和业务层事务管理等众多企业级应用技术, 还能整合世界众多优秀开源的第三方框架和类库, 已经成为了众多企业应用开发框架.
- https://spring.io
优势
- 解耦合, 简化开发(IOC与DI)
- AOP编程的支持(面向切面编程)
- 声明式事物的支持(@Transnational)
- 方便程序的测试(@Junit)
- 方便集成各种优秀框架(@Mybatis @Lambook @Redis … )
- 降低了使用难度(注解的使用简化开发)
- 源码是经典的java学习范例
核心架构
- Spring核心容器(Core container) : 包含了spring应用中Bean的创建、配置和管理. 在该模块中, 包括了spring bean factory, 为spring提供了DI的功能. 基于bean工厂, 我们还会发现多种spring应用上下文的实现.
- 面向切面编程(AOP) /Aspects spring : 对面向切面编程提供了丰富的支持. 这个模块是spring应用系统中开发切面的基础, 与DI一样, AOP可以帮助对象解耦.
- 数据访问与集成 (Data Access/ integration) : 集成了大量JDBC和DAO样板代码, 使得数据库代码变得简洁. 也可以更专注于我们的业务, 还可以避免数据库资源释放失败而引起的问题.
- web : 提供了SpringMVC框架给Web应用, 还提供了多种构建和其他应用交互的远程调用方案
- Test : 很方便的进行单元测试
核心思想
IOC
- Inversion of control (控制反转)
-- 描述的事情: Java开发领域对象的创建, 管理的问题
-- 传统开发方式: 通过new对象来实现
-- IOC思想开发方式: 我们不需要自己去new对象, 而是从IOC容器去帮助我们实例化对象并且管理它, 我们需要那个对象, 去问IOC容器拿就可以了
- resolve question : 对象之间的耦合问题
- IOC和DI的区别
-- 描述的是同一件事情, 只是角度不一样.
-- IOC是站在对象的角度, 对象实例化的权利都交给了容器
-- DI是站在容器的角度, 容器会将对象依赖的其他对象注入
AOP
- Aspect Oriented Programming :
-- AOP是OOP的延续; OOP的三大特征: 封装、继承和多态, OOP是一种垂直继承体系, 所以不能解决切面编程问题
-- 切面编程: 切指的是横切逻辑, 面指的是受横切逻辑影响的多个方法 - resolve question : 在不改变原有业务逻辑的情况下, 增强横切逻辑代码, 根本上解耦合.
推荐阅读
spring-IOC-2...
https://segmentfault.com/a/11...
注解持续更新中...
https://segmentfault.com/a/11...
代码参考地址...
https://github.com/sumcolin/s...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。