总有些梦想,会变成现实。
Spring官方文档地址
目前github上面最新的Spring版本是5.x,
先列出官方文档地址:
https://docs.spring.io/spring/docs/5.1.9.RELEASE/spring-framework-reference/
但是我觉得4.x版本的文档看起来更舒服:
https://docs.spring.io/spring/docs/4.3.25.RELEASE/spring-framework-reference/htmlsingle/
可以先看看4.x版本的文档,再看下5.x引入的新特性,地址:
https://github.com/spring-projects/spring-framework/wiki/What's-New-in-Spring-Framework-5.x
宁外看到一个博客介绍的也挺好的,地址:
https://www.cnblogs.com/ywlaker/p/6136625.html
1. Spring模块概览
Spring框架由大约20个模块组成的特性组成,这些模块又可以分为Core Container, Data Access/Integration, Web, AOP,
Instrumentation,Messaging和Test模块,如下图所示:
1. Core Container
Core container 核心容器,包含有Core、Beans、Context、和Expression Language模块。
- Core模块主要是Spring框架基本的核心工具类,Spring的其它组件都要用到这个包里的类。
- Beans模块包含访问配置文件、创建和管理bean以及进行IOC/DI操作相关的类
- Context模块在Beans的基础之上,添加了对国际化(资源绑定)、事件传播、资源加载和对Context的透明创建的支持(例如,通过一个Servlet容器)。
- Expression Language 提供了强大的表达式语言,用于在运行时查询和操纵对象
2. AOP
AOP模块提供了一个通用的面向切面编程的实现。
- spring-aspects模块提供了AspectJ的集成支持
- spring-instrument 提供了类检测支持以及在特定应用服务器上使用的类加载器
- spring-instrument-tomcat 模块包含了为tomcat实现的spring instrumentation代理
3. Messaging
Spring Framework4 包含了spring-messaging模块,继承了关键的抽象例如Message,MessageChannel,MessageHandler和其它基于消息的应用提供的基础功能。这个模块也包含了一些注解用来映射 消息和方法,类似Spring MVC基于注解的编程模型。
4. Data Access/Integration
Data Access/Integration 层包含了JDBC、ORM、OXM、JMS和Transaction模块
- JDBC模块提供了一个JDBC抽象层,可以消除冗长的JDBC编码和解析数据库厂家特有的错误代码,这个模块包含了Spring对JDBC操作的所有类。
- ORM模块是流行的对象-关系映射API,如JPA、JDO、Hibernate、ibatis等,提供了一个交互层,利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射,如事务管理。
- OXM模块提供了一个对Object/XML映射实现的抽象层,Object/XML映射实现包括JAXB、Castor、XMLBeans、JiBX和XStream
- JMS(Java Message Service)模块主要包含生产和消费消息的一些模块
- Transaction模块支持编程和声明式事务的管理,这些事务必须实现特定的接口,并且对所有的POJO都适用
5. Web
Web层包括
spring-web
,spring-webmvc
,spring-websocket
, 和spring-webmvc-portlet
模块
- spring-web模块提供对web方面特性的集成,例如Multipart文件上传的支持、通过Servlet listeners初始化 IOC 容器、初始化面向web的应用上下文,它还包含一个Http客户端以及web相关的spring远程调用的支持。
- spring-webmvc 模块包含了Spring的MVC、和为web应用实现的REST服务。Spring的MVC框架吧领域模型(domain model)代码和web表单划分开,而且提供整合spring框架的其它特性。
- spring-webmvc-portlet 模块实现了在Portlet环境中使用的MVC,以及类似基于servlet的spring-webmvc模块的功能。
6. Test
spring-test模块支持基于Junit或者TestNG,对Spring组件进行单元测试和集成测试。它提供了与Spring ApplicationContexts一致的加载,以及缓存这些上下文,宁外还提供可以让你隔离测试代码的mock对象
2. Spring的依赖管理
spring考虑到spring的jar包较多且有各个不同的版本,开发者如果不小心错误的引用了一些jar包或者版本,将会产生一些让人困惑的错误,为了避免这些错误,Spring提供了“bom”的依赖管理(Bill Of Materials),只需要在maven项目中,引入要使用spring版本的bom,就可以避免jar包的版本混乱,具体如下:
例如我想使用spring的最新版本,当前是5.x,在项目pom.xml中加入
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.1.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
后续再引入需要的jar包时,就不用指定相关模块的版本号了,因为上面的spring-framework-bom依赖管理中,已经定义了各个模块应该引入的版本,比如我想引入spring-context模块和test模块
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
</dependencies>