1 Spring特性
- 非侵入式:基于Spring开发的对象可以不依赖Spring API;
- 控制反转:IOC(Inversion of Control),对象的创建交给Spring(用户管理Bean转变为框架管理Bean);
- 依赖注入:DI(Dependency Injection),依赖的对象不需要手动调用 setXX方法去设置,而是通过配置赋值
重点:理解IOC和DI 参考: juejin.cn/post/685740…
- 面向切面编程 AOP
- 容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期;
- 组件化:Spring使用简单的组件配置组合成复杂应用。使用XML和Java注解组合这些对象;
2 Spring组件
Core Container
包含Beans模块、Core核心模块、Context上下文、SpEL表达式。 Beans模块:框架基础功能,控制反转和依赖注入 Core核心:封装Spring框架底层,包括资源访问、类型转换和常用工具类 Context上下文模块:在Core和Beans基础上,集成Beans模块功能,添加资源绑定、数据验证、国际化、容器生命周期等; SpEL模块:提供强大表达式语言支持。
Data Access/Integration(数据访问、集成)
包括 JDBC、ORM、OXM、JMS 和 Transactions 模块
- JDBC模块:提供JDBC的样例模板
- ORM模块:支持JPA、JDO、Mybatis
- OXM模块:支持Java Object/XML映射的抽象层实现
- Transactions 事务模块:支持编程和声明式事务管理。
Web模块
Web 层包括Web、Sevlet、WebSocket和Webflux 组件
- Web模块:提供web开发集成特性
- Sevlet模块:提供Spring MVC Web框架实现
- WebSocket模块:提供简单接口,搭建WebSocket Server
- Webflux模块:5.x引入的响应式web框架
AOP、Aspects、Instrumentation和Messaging
- AOP模块:提供面向切面编程实现,例如日志记录、权限控制、性能统计等通用功能;
- Aspects模块:AOP框架
- Instrumentation 模块:类工具的支持和类加载器的实现
- messaging 模块:4.0以后新增消息模块
- jcl模块:5.0以后新增日志框架模块
Test模块
Spring 支持 Junit 和 TestNG 测试框架