Spring大概有20个模块,它们被分组到Core Container、Data Access/Integration、Web、AOP、Instrumentation、Test。
1. Core Container
Core Container由Core、Beans、Context、Expression Language四个模块组成。
Core和Beans
模块Core和Beans为整个Spring提供了基础部分,包括IoC和依赖注入功能。
BeanFactory是工厂模式的一个高级实现,它摒除了编程形式的单例,这就使得可以把配置和规范的依赖性从真实的程序逻辑中解偶。
Context
Context构建于Core和Beans模块的基础之上,它是一种使用框架风格方式来访问对象的手段,这种方式有点类似于JNDI注册表。
Context继承了Beans模块的功能,并且增加了对国际化(例如:资源束),事件传播,资源加载以及透明的上下文创建(例如:通过Servlet容器创建)。
Context还支持JavaEE功能,例如EJB、JMX、基本的远程调用。
ApplicationContext接口是Context模块的焦点。
Expression Language
Expression Language模块提供一种强大的表达式语言来查询及操作运行时的对象图。
Expression Language是对在JSP2.1规范中所规定的统一表达式语言的一种扩展。
Expression Language支持设置/获取属性值、属性赋值、方法调用、访问上下文数组、集合及索引器、逻辑及算术操作、命名变量、通过名字从IoC容器中检索对象。它也支持列表投射及选择、列表聚合。
2. Data Access/Integration
Data Access/Integration由JDBC、ORM、OXM、JMS、Transaction五个模块组成。
JDBC
JDBC模块提供一个JDBC抽象层,用以减少乏味的JDBC代码,也用于解析特定于数据库提供商的错误代码。
ORM
ORM模块为流行的对象关系映射API提供一个集成层,支持的对象关系映射API包括JPA、JDO、Hibernate及iBatis。ORM包能让你使用所有这些O/R映射框架,且还能与Spring提供的其它功能进行混合,例如简单的声明式事务管理。
OXM
OXM模块为JAXB、Castor、XMLBeans、JiBx及XStream的Object/XML映射实现提供一个抽象层。
JMS
JMS包含了生产和消费消息的功能。
Transaction
对于实现了特定接口的类以及所有POJO类,Transaction模块可以为它们提供编程式的以及声明式的事务管理支持。
3. Web
Web由Web、Web-Servlet、Web-Struts、Web-Portlet四个模块组成。
Web
Web模块提供面向Web的基础集成功能,例如多文件上传功能、使用Servlet监听器初始化IoC容器、面向Web的应用上下文。它还包含有与Web相关的远程调用支持。
Web-Servlet
Web-Servlet模块包含了Spring对Web应用的MVC实现。Spring的MVC框架提供了对领域模型代码和web表单之间的明确分离功能,且可以集成所有其它Spring的功能。
Web-Struts
Web-Struts模块包含了Spring应用集成典型的Struts Web层所需要的支持类。注意,从Spring3.0开始,对Struts的支持已经被弃用。请把你的应用迁移到Struts2.0以及使用它的Spring集成,或者迁移到Spring MVC解决方案。
Web-Portlet
Web-Portlet模块提供在Portlet环境中使用的MVC实现,它也镜像了Web-Servlet模块的功能。
4. AOP and Instrumentation
Spring的AOP模块提供了一个与AOP联盟兼容的面向切面的编程实现,它允许你定义方法拦截以及切入点来清晰地解偶本该分离的功能的代码。使用源代码级别的元数据功能,可以把行为信息混合到代码中,这种方式有点像.NET的属性。
独立的Aspects模块提供与AspectJ的集成功能。
Instrumentation模块提供类设备支持,以及在某些应用服务器中使用的类加载器实现。
5. Test
Test模块使用JUnit和TestNG来测试Spring组件。它提供一致的Spring应用上下文加载及对这些上下文的缓存。它也提供模拟对象来独立地测试你所写的代码。