0. 全景图
本文说明的Spring Framework版本:4.3.25.RELEASE
Spring框架由20个模块组成,这些模块被分成组,分别为:
- 核心容器(Core Container)
- AOP(Aspect Oriented Programming)
- Instrumentation
- 消息(Messaging)
- 数据访问/集成(Data Access/Integration)
- 网站(Web)
- 测试(Test)
1. 核心容器(Core Container)
由以下模块组成:
- spring-core:框架的基础部分,提供IoC/DI能力
- spring-beans:运用工厂模式实现BeanFactory功能
- spring-context:基于Core和Beans模块,提供一套对象访问的方法,以及提供一些额外的能力支持,如国际化(internationalization)、事件传递(event propagation)、资源加载(resource loading)、构造容器上下文(Servlet container);同时也支持Java EE的特性,如EJB、JMX以及基础远程调用(basic remoting)
- spring-context-support:提供普通第三方包的整合支持,如缓存能力(EhCache、Guava、JCache)、邮件能力(JavaMail)、定时服务(CommonJ、QuartZ)以及模版引擎(FreeMarker、JasperReports、Velocity)
- spring-expression:提供强大的表达式语言能力
2. AOP
- spring-aop:提供AOP能力
- spring-aspects:提供AspectJ的集成
3. Instrumentation
- spring-instrument:提供用于某些应用程序服务器的类级工具和类加载器的实现
- spring-instrument-tomcat:Spring‘s instrumentation agent for Tomcat
4. Messaging
- spring-messaging:提供消息协议支持的能力,包括Message,MessageChannel,MessageHandler
5. Data Access/Integration
由JDBC、ORM、OXM、JMS和Transaction模块组成
- spring-jdbc:提供一个JDBC操作的抽象层,减少JDBC操作代码以及解析不同数据库厂商的错误代码
- spring-tx:提供事务管理的能力
- spring-orm:提供一些orm框架的支持,如JPA、JDO、Hibernate
- spring-oxm:提供一些xml对象映射框架(oxm)的支持,如JAXB、Castor、XMLBeans、JiBX、XStream
- spring-jms:提供Java消息服务的支持,在Spring 4.1之后,该模块已经集成到spring-messaging模块中去了
6. Web(网站)
由spring-web、spirng-webmvc、spring-websocket和spring-webmvc-portlet组成
- spring-web:提供web应用需要的基础能力,如多文件上传、使用Servlet监听器初始化IoC上下文容器
- spring-webmvc:大名鼎鼎的springmvc框架
- spring-websocket:提供和websocket相关的能力
- spring-webmvc-portlet
7. Test(测试)
- spring-test:提供单元测试和集成测试相关能力(JUnit或TestNG)
8. 唯一硬性外部依赖
spring一直保持最小化的外部依赖,唯一硬性的外部依赖就是Logging了,不额外引入的话就使用JDK中的java.util.logging来打印日志了。
spring-core中依赖了common-logging,这个只是一个日志门面,没有具体实现,可以引入Log4j、LogBack等日志实现框架。其中Log4j1.2版本已经进入EOL阶段了,Log4j2.3版本也兼容到最高java6版本,所以现在推荐使用Log4j2.4以上的版本。
当然,如果不想用JCL日志门面,也可以换成SLF4j,不过要做日志的桥接,而且把spring-core中common-logging依赖exclude掉。这时用LogBack就最舒服了,因为LogBack就是按照SLF4j的接口进行实现的,所以不存在桥接的问题。
(•̀ᴗ•́)و ̑̑