经常使用spring ,偶尔也看看了spring 一些分析,本文是对spring framework的模块进行简单介绍,方便加深理解和以后查找,主要是对spring framework reference文档的引用和翻译。
spring 主要有20个模块组成,这些模块封装在core container(核心)层,data aceess/intergration 层(数据访问),web层(网页),aop层(切面编程),Instrumentation层(工具),Messaging层(消息JMS) 这六层,还有测试层。下面是spring framework模块结构图。
spring core container
spring core container主要有 spring-beans,spring-core,spring-context,spring-context-support,
spring-expression组成。
spring-bean和spring-core提供了spring framework 框架的基础核心功能,包括依赖注入(IOC)和控制反转(DI)。BeanFactory 是工程模式的复杂实现,它不需要通过编程实现单例,可以让你将业务逻辑中的依赖关系和配置解耦出来。
spring-context 模块建立在 spring-beans,spring-core 坚固基础上。它提供了一种类似注册JNDI的访问spring容器内对象的手段,context 模块继承beans 模块的特性并增加国际化支持(例如:资源绑定)。事件传播,资源加载,透明创建context。例如,一个servlet容器,context模块同样支持Java ee的特性。如EJB,JMX 和远程调用。applicationContext 接口是是context模块的核心。spring-context-support 整合缓存(EHCache,Guava,Jcache),邮件(javaMail),定时任务(commonJ,quartz)和模板引(freemarker,jasperReport,velocity)这些常用第三方框架。
spring-expression 模块提供在运行时,查询、操作对象的强大表达式语言,它是对JSP2.1规范统一EL标准的扩展实现,该表达式语言支持设置和获取对象属性值,属性初始化,方法调用,访问数组,列表,集合内容,支持逻辑和算术运算操作,设置变量,从spring IOC 容器中根据变量名称获取对象的值。同样支持list 投影和选择和列表聚合。
aop and instrumentation
spring-aop 模块实现允许自定义面向切面编程。如方法拦截,解耦分离函数代码,使用源代码级别的元数据功能,你可以行为信息写在代码中类似在.net attributes管理。
spring-aspect模块整合第三方库AspectJ
spring-instrument模块提供class整合支持和在包含应用服务器中使用的类加载器。spring-instrument-tomcat 模块对tomcat容器的代理。
messaging
spring framework 4 包含了 spring-messaging 模块,是从spring intergration项目抽象出 如Message,MessageChannel,MessageHandler,和其他的服务器的基础信息应用。该模块同时包含了一些用来映射消息到方法的注解,就行spring mvc 编程模型的注解。
data access/integration
data access/integration 层由JDBC,ORM,OXM,JMS 和transaction 模块组成。
spring-jdbc 模块对jdbc抽象出来,移除了jdbc数据库操作的重复的编码和解析不同数据库厂商的错误代码。
spring-tx 模块实现对特定接口或POJOS对象提供编程方式和声明方式的事务管理。
spring-orm整合了流行的ORM(对象关系映射)框架,包括JPA,JDO,和hibernate,使用这些框架后同时可以使用spring-orm模块的其它的特性。如声明事务管理特性。
spring-oxm 模块整合了对xml第三方框架如JAXB,CASTOR,XMLBeans,JiBx 和XStream.
spring-jms 模块提供包含生产和消费消息特性。从4.1版本开始它和整合了spring-messaging模块。
web
web层由spring-web,spring-webmvc,spring-websocket 和spring-portlet模块组成。
spring-web提供诸如文件上传 使用servlet lislener 初始化IoC容器,和一个web方面的 application context等基础特性,同时包含一个http客户端和web相关的spring远程支持。
spring-webmvc 模块(也叫spring-servlet模块)包含了spring实现的 mvc 和 REST 风格的web服务的实现,spring 的mvc框架清晰的隔离了domain model 代码和web表单代码,并整合了所有spring其他的特性。
spring-webmvc-porltet 模块(也叫spring-portlet模块)在portlet环境下使用spring-mvc和spirng-webMvc模块的其他基础功能。
英语水平有限,错误难免,请指正