2.3 Spring框架的应用场景
前面介绍的Spring各个功能模块使得Spring框架在很多场景成为一种不二的选择,无论是资源有限的嵌入式应用还是使用了事务管理和web集成框架的成熟的企业级应用。

图2.2 典型的Spring web应用程序架构
Spring的声明式事务管理可以使web应用完成事务化,就像使用EJB容器管理的事务一样。所有由用户定制的业务逻辑都可以使用简单的POJO实现,并用Spring的IoC容器对POJO进行管理。另外,还包括发邮件服务和独立于web层的验证功能,由用户自己在决定何处执行验证规则。Spring的ORM框架可以集成JPA、Hibernate和JDO等,比如,使用Hibernate时,可以继续使用已存在的映射文件和标准的Hibernate的SessionFactory配置。表单控制器把web层和领域模型无缝地整合在一起,移除了ActionForms和其它把HTTP参数转换成领域模型的类。

图2.3 Spring作为中间层整合第三方Web框架
在一些场景下,可能不允许你完全切换到另一个框架。然而,Spring框架不强制你使用它所有的东西,它不是非此即彼(all-or-nothing)的解决方案。前端使用Struts、Tapestry、JSF或别的UI框架时都可以把Spring作为中间层进行集成,从而使用Spring的事务管理功能。开发者仅仅只需要使用ApplicationContext来封装自己的业务逻辑,并使用WebApplicationContext集成web层即可。

图2.4 Spring框架的远程调用场景
当需要通过webservice访问现有代码时,可以使用Spring的Hessian-,Burlap-,Rmi-或者JaxRpcProxyFactory类。Spring框架使得远程访问现有的应用并非难事。

图2.5 EJBs-封装现有的POJOs
Spring框架也为EJB提供了抽象访问层,可以重新使用现有的POJO并把它们包装到无状态的会话Bean中,使其应用于可扩展的安全的web应用中。