什么是Spring
Spring是一个开源框架,Spring是为了解决企业应用程序开发的复杂性而创建的。框架的主要优势之一是分层架构,分层架构允许使用者选择使用哪一个组件。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中收益。Spring的核心是控制反转(IOC)和面向切面(AOP)。
简单来说,Spring是一个分层的JavaSE/EE full-stack的轻量级开源框架。
Spring的特点
方便解耦,简化开发:
通过Spring提供的IOC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度耦合。有了Spring,使用者不必在为了单例模式类,属性文件解析等这些很底层的要求编写代码,可以更专注于上层的应用。
AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
声明式事务的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解放出来,通过声明式灵活地进行事务的管理,提高开发效率和质量。
方便集成各种优秀的框架
Spring 不排斥各种优秀的开源框架,相反,Spring 可以降低各种框架的使用难度。
降低Java EE API的使用难度
Spring对很多难用的Java EE API, 如:JDBC,JavaMail,远程调用等,提供了一个封装层。
Spring 框架
核心容器:核心容器提供Spring框架的基本功能(Spring Core)。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring上下文:spring上下文是一个配置文件,向Spring框架提供上下文信息。
Spring AOP:通过配置管理的热性,Spring AOP模块直接将面向切面的编程功能集成了SPring框架中。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库提供商抛出的异常信息。异常层次结构简化了错误处理,并且极大的降低了需要编写的异常代码数量(例如打开和关闭连接)。
Spring ORM:Spring 框架插入了若干个ORM框架,如:JDO、Hibernate和iBatis。所有这些都遵从Spring的通用事务和DAO异常层次结构。
Spring Web:web上下文模块建立在应用程序之上,为基于web的应用程序提供了上下文。所以,Spring框架支持与Struts的集成。web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
Spring MVC 框架: MVC框架是一个全功能的构建web应用程序的MVC实现。通过策略接口,MVC框架变成为了高度可配置的,MVC 容纳了大量视图技术,其中包括了:JSP、Velocity、Tiles、iText和POI。模型由javabean构成,存放于Map;视图是一个接口,负责显示模型;控制器表示逻辑代码,是Controller的实现。Spring 框架的功能可以在任何J2EE服务器中,大多数功能也适用于不受管理的环境。
总结
- 低侵入式设计,代码污染极低
- 独立于各种用用服务器,基于Spring框架的应用,可以真正实现Write once, Rum Anywhere的承诺
- Spring 的DI 机制降低了业务对象替换的复杂性,提高了组件之间的解耦
- Spring 的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式的管理,从而提供了很好的复用
- Spring 的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
- Spring 并不强制应用完全依赖于Spring,开发者可自由的选用Spring框架的部分或者全部