Spring之崛起
在早期的J2EE平台开发实践过程中,盲目地推崇某一“兵种”,比如EJB。对于EJB这种重骑兵,有着代价高昂(意味着需要引入拥有EJB容器Container的应用服务器(J2EE Application Server)的支持)、自身限制太多(部署测试困难,复杂的类加载机制,复杂的部署描述符,过场的开发部署周期等)、发挥作用的场景有限(只有 在分布式场景中才能带来最大的益处)等缺点。所以EJB是使用J2EE平台各项服务的一种方式,但不是唯一的方式。
所以 倡导轻量级应用解决方案的 Spring就横空出世了。
Spring并不是要代替EJB,而是给出EJB之外的另一种方案,对于Spring的使用也应该开绿道具体的应用场景。
Spring框架概述
框架所倡导的基于POJO(Plian Old Java Object,简单Java对象)的轻量级开发理念:
组成整个Spring框架的各种服务实现被划分到了多个相互独立却又相互依赖的模块当中,正如图所示。
整个Spring框架构建在Core核心模块之上,它是整个框架的基础。
- 在该模块中,Spring为我们提供了一个IoC容器(IoC Container)实现,用于帮助我们以依赖注入的方式管理对象之间的依赖关系。
对于该容器的介绍,将成为我们此次Spring之旅的第一站。 - AOP框架可以以AOP的形式增强各POJO的能力,进而弥补OOP/OOSD的缺憾。Spring的AOP框架符合AOP Alliance规范,采用Proxy模式构建,与IoC容器相结合,可以充分显示出Spring AOP的强大威力。
我们将在了解Spring的IoC容器的基础上,详细讲述Spring AOP这一部分。 - Spring框架在Core核心模块和AOP模块的基础上,为我们提供了完备的数据访问和事务管理的抽象和集成服务:在数据访问支持方面,Spring对JDBC API的最佳实践极大地简化了该API的使用。除此之外,Spring框架为各种当前业界流行的ORM产品,比如Hibernate等提供了形式统一的集成支持。Spring框架的事务管理抽象层是Spring AOP的最佳实践,它直接构建在Spring AOP的基础上,为我们提供了编程式事务管理和声明式事务管理的完备支持。
- 为了简化各种JAVA EE服务,如JNDI JMS JavaMail等,Spring框架为我们提供了相对的集成服务。
- 最后要提到的就是Web模块,Spring框架提供了一套自己的Web MVC框架。