一、概述
Spring是企业级应用开发的轻量级开源框架,最初由 Rod Johnson 编写的,并于 2003 年 6 月首次在 Apache 2.0 许可下发布。Spring是实现IOC(Inversion of Control)容器和非入侵性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的实现方式,提供对持久层(Persistence)、事物(Transcation)的支持,提供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装、并且还对市面一些主流框架提供整合方案。它是企业级应用开发的一站式选择,它的出现大大降低企业应用程序开发的复杂度。
二、起源
要谈Spring的历史,就要先谈JavaEE。JavaEE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望。
曾经使用过EJB开发JAVA EE应用的人,一定知道,在EJB开始的学习和应用非常的艰苦,很多东西都不能一下子就很容易的理解。EJB要严格地实现各种不同类型的接口,类似的或者重复的代码大量存在。而配置也是复杂和单调,同样使用JNDI进行对象查找的代码也是单调而枯燥。虽然有一些开发工作随着xdoclet的出现,而有所缓解,但是学习EJB的高昂代价,和极低的开发效率,极高的资源消耗,都造成了EJB的使用困难。而Spring出现的初衷就是为了解决类似的这些问题。
Spring的一个最大的目的就是使JAVA EE开发更加容易。同时,Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说Spring是一个提供了更完善开发环境的一个框架,可以为POJO(Plain Ordinary Java Object)对象提供企业级的服务。
三、优点
1,方便解耦、简化开发
Spring提供的IOC容器将对象之间的依赖关系进行管理,不必再为对象的单例、配置文件解析等进行额外的编码,可以更专注于业务逻辑的开发。
2,AOP面向切面编程的支持
面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
3,声明式事务的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
4, 方便程序的测试
可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。
5,方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts、Hibernate、Mybatis、Dubbo等)的直接支持。
6,降低Java EE API的使用难度
Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用,Redis等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。
7,源代码是经典学习范例
Spring的源码设计精妙、结构清晰、匠心独运,处处体现着大师对java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果。
四、总结
Spring给复杂的JavaEE开发带来了春天。它的核心是轻量级的IOC容器,它的目标是为JavaEE应用提供了全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间可以彼此独立,也可以使用其它的框架方案加以代替,Spring希望为企业应用提供一站式(one-stopshop)的解决方案。