1. 核心容器(Core Container)
核心容器包含Core
,Beans
,Context
和Expression Language
四个部分.
Core
和Bean
模块是框架中最基础的部分,提供控制反转(IoC)和依赖注入(Dependency Injection)。其中的BeanFactory
实现了工厂模式,避免手动实现工厂单例,同时可以使对象之间的依赖关系与真正的程序逻辑解耦。
Context
模块基于Core
模块和Beans
模块,通过它可以以一种“框架风格”的方式来访问对象,类似于JNDI的注册机制。Context
继承了Beans
的特性,此外它还通过使用servlet容器或者其他方式添加了对国际化(例如使用resource bundles)、事件传播、资源加载和透明创建上下文的支持。Context
模块也提供了对EJB、JMX和基本远程等Java EE特性的支持。ApplicationContext
接口是Context
模块的核心。
Expression Language
模块为在运行时查询、操作对象图提供了一种强大的表达式语言,它是JSP 2.1规范中的通用表达式语言的一个扩展。它支持设置、获取属性值,属性赋值,方法调用,访问序列、集合的上下文和索引,逻辑、算术运算符,命名变量,从Spring的IoC容器中按名字遍历对象。它也支持列表的映射、选择以及表聚合。
2. 数据访问/集成(Data Access/Integration)
数据访问/集成层包括JDBC
、ORM
、OXM
、JMS
、Transaction
模块。
JDBC
模块提供了一个JDBC抽象层,免除了枯燥乏味的JDBC编码和特定数据库的错误分析工作。
ORM
模块为常用的对象-关系映射框架提供集成,如JPA、JDO、Hibernate、iBatis。通过ORM
你可以将这些对象-关系映射框架和Spring的其他特性结合在一起使用,比如之前提到的声明式事务管理功能。
OXM
模块提供一个支持JAXB、Castor、XMLBean、JiBx、XStream等对象-XML映射的实现。
JMS
(Java消息服务)模块包含了生成、处理消息时的一些特性。
Transaction
模块支持对实现了特殊接口的类和所有的POJOs进行编程式和声明式的事务管理。
3. Web
Web
层包括Web
、Web-Servlet
、Web-Struts
、Web-Portlet
四个模块。
Spring的Web
模块提供了基本的面向Web的集成特性,比如分段文件上传功能、使用servlet监听器和面向web的应用上下文(application context)进行IoC容器的初始化。它也包含Spring的远程支持中与web相关的部分。
Web-Servlet
模块包含Spring为web应用提供的模型-视图-控制器(MVC)实现。Spring的MVC框架将领域模型代码和web表单明确地分离开来,并与Spring框架的其他特性集成到一起。
Web-Struts
模块包含将经典的Struts web层集成到一个Spring应用里的一些支持类。在Spring 3.0中这个支持已经被建议不要使用。可以考虑将应用移植到Struts 2.0和它的Spring集成或者换用Spring MVC。
Web-Portlet
模块提供portlet环境下的MVC实现并仿效了Web-Servlet
模块的功能。
4. 面向切面编程和仪表化(AOP and Instrumentation)
Spring的AOP
模块提供了符合 AOP Alliance规范的面向方面的编程(aspect-oriented programming)实现,让你可以定义方法拦截器(method-interceptors)和切点(pointcuts)来清晰的解耦不同功能的代码。同时,利用source-level的元数据功能,还可以将各种行为信息合并到你的代码中,这有点象.Net的attribute的概念。
独立的Aspects
模块提供与AspectJ的集成。
Instrumentation
模块提供类的仪表化支持以及特定应用服务器中类加载器的实现。
5. 测试(Test)
Test
模块支持使用Junit或者TestNG来测试Spring的组件。它提供一致的Spring ApplicationContexts的加载、缓存过程。它同时也提供了用于独立测试代码的mock对象。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于