企业级应用开发总是涉及方方面,Spring 框架是一个轻量级的解决方案,可以把Spring框架看成一个标准的开发组件.Spring框架被设计成无侵入的方式,即企业应用可以根据需要选择Spring框架中必要的组件,而忽略其它部分,以做到最小范围依赖Spring 框架.
Spring框架是由20个模块功能组成分别是:Core Container(核心容器), Data Access/Integration(数据访问/集成), Wep,AOP(面向切面编程), Instrumentation(仪器仪表),Test
如图所示:
1.核心容器:
核心容器的核心由,bean类,上下文,和表达语言模块组成.
core和beans类模块提供的框架的基本组成部分,包括IOC(控制反转)和依赖注入的特性。BeanFactory是一个复杂的工厂
模式实现方式。它不再需要针对程序性,并允许您配置和规格的依赖你的实际程序逻辑解耦。
content模块建立在坚实的基础,提供core和beans模块:它是一种手段要访问一个框架式的方式,类似于一个JNDI注册对象。context模块
继承Beans模式其特征并增加了对国际化的支持(使用,例如,资源束),事件传播,资源加载,和透明的情境创设的,
例如,一个servlet容器。上下文模块还支持Java EE的特点,如EJB,JMX,和基本的远程处理。ApplicationContext接口是context模块的焦点
Expression Language模块提供了一个强大的表达语言的查询和在运行时操纵一个对象图。它的统一表达式语言的一个扩展(统一EL)在JSP 2.1规范中指定。语言支持获取和设置属性值,财产的分配,方法调用,访问数组的情况下,收集和索引器,逻辑和算术运算符,命名变量,并从Spring的IOC的名字对象检索容器。它还支持列表投影和选择以及常见的列表聚合。
2.数据库访问/集成
数据访问和集成由:JDBC,ORM,OXM,JMS和Transaction模块组成。
JDBC模块提供了一个抽象层,不需要冗长的JDBC编码和数据库供应商特定的错误代码解析。
ORM模块提供了流行的对象关系映射APIs集成层,包括JPA,JDO,Hibernate和iBatis。使用ORM包,您可以使用所有这些O / r-mapping框架,结合所有的Spring提供的其他特性,如简单的声明式事务前面提到的管理特征。
OXM模块提供了支持对象或XML映射实现一个抽象层JAXB,Castor,XMLBeans,JiBX和XStream。
在Java消息服务(JMS)模块包含用于生产和消费信息的特征.
Transaction模块支持类的程序和声明式事务管理实行特殊的接口和所有您的POJOs(普通的Java对象)。
3.Web
Web层由Web,Web-servlet,Web-Struts,和网络接入模块组成。
Spring的web模块提供了基本的面向Web的集成功能,如多文件上传功能和初始化的IOC容器使用servlet侦听器和一个面向网络应用上下文。它也包含了Spring的远程支持网站相关的部分。
Web servlet模块包含Spring的 模型-视图-控制器(MVC)实现Web应用。Spring的MVC框架提供了域模型代码之间的一个干净的分离Web窗体,并整合了Spring框架的其他功能。
Web Struts模块包含用于在集成一个经典的Struts Web层支持类Spring的应用。请注意,这种支持是现在的Spring 3.0。考虑迁移你的Struts 2. 0和Spring集成或一个Spring MVC方案中的应用。
Web-portlet 模块提供了MVC实现用于portlet环境和反射特性的Web servlet模块。
4.,AOP and Instrumentation
Spring的AOP模块提供了一个AOP联盟兼容的面向切面编程实现允许您定义,例如,拦截器和切入点解耦代码实现的功能,应该分开。使用源代码级的元数据功能,你也可以将行为信息切入到你的代码中
切面模块提供与AspectJ的整合。
Instrumentation模块提供支持和类加载器实现类仪表用于某些应用程序服务器。
5.Test
Test模块支持与TestNG测试JUnit或Spring组件。它提供了一致的加载Spring ApplicationContexts和这些上下文缓存。它还提供了模拟对象你可以使用隔离测试你的代码
spring 使用场景:
所描述的构建模块前面使Spring时合理的选择在许多情况下,从简单的Applet
要使用Spring的事务管理功能和Web成熟的的企业应用
框架集成。
典型的spring 成熟web应用
Spring的声明式事务管理功能,使Web应用程序完全事务,只是因为如果你使用EJB容器管理的事务的那样。您的所有自定义的业务逻辑可以
实现简单的POJO和Spring的IoC容器管理。其他服务包括用于发送电子邮件和验证,它是独立的web层,它可以让你选择的支持在哪里执行校验规则。 Spring的ORM支持集成了JPA,Hibernate中,JDO和iBatis的,例如,使用Hibernate的时候,您可以继续使用现有的映射文件和标准的Hibernate SessionFactory的配置。表控制器无缝集成web层
与域模型,不再需要该变换的ActionForm或者其他类的HTTP参数值,为您的域模型。
使用第三方的Web框架Spring中间层
有时情况不允许你彻底地切换到一个不同的框架。Spring的框架不强迫你在使用它的一切,它不是一个全有或全无的解决方案。现有建立与WebWork的前端,Struts中,Tapestry或其他的UI框架可以用Springbased集成中间层,它允许你使用Spring的事务特性。你只需要要连接您使用一个ApplicationContext和使用的WebApplicationContext来集成业务逻辑你的web层。
远程使用场景
当你需要通过Web服务来访问现有的代码,你可以使用Spring提供的Hessian-,Burlap-,RMI或JaxRpcProxyFactory类。启用远程访问现有应用程序并不难。
EJBs - 包装现有的 POJOs
Spring框架还提供了企业级JavaBeans接入和抽象层,使您能够重用现有的POJO并将他们包装在无状态会话bean用于可扩展的,故障安全,可能需要声明式安全Web应用程序。