spring4的介绍
1. 概述
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
2. 使用Spring的好处
(1)轻量级容器:以集中的、自动化的方式进行应用程序对象创建和装配,负责对象创建和装配,管理对象生命周期,能组合成复杂的应用程序。Spring容器是非侵入式的(不需要依赖任何Spring特定类),而且完全采用POJOs进行开发,使应用程序更容易测试、更容易管理。而且核心jar包非常小,不需要依赖任何应用服务器,可以部署在任何环境(Java SE或Java EE)。
(2)AOP(Aspect Oriented Programming):意思是面向切面编程,提供从另一个角度来考虑程序结构以完善面向对象编程(相对于OOP),即可以通过在编译期间、装载期间或运行期间实现在不修改源代码的情况下给程序动态添加功能的一种技术。通俗点说就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中;比如安全,日记记录等。
(3)简单的数据库事务管理:Spring支持可插入的事务管理支持,而且无需JEE环境支持,通过Spring管理事务可以把我们从事务管理中解放出来来专注业务逻辑。
(4)JDBC抽象及ORM框架支持:Spring使jdbc更加容易使用;提供DAO(数据访问对象)支持,非常方便地集成第三方ORM框架,比如Hibernate等;并且完全支持Spring事务和使用Spring提供的一系列异常体系。
(5)灵活的Web层支持:Spring提供一套非常强大的MVC框架,可以非常容易的与第三方MVC框架集成,比如Struts等。
(6)简化各种技术集成:提供对Java Mail、任务调度、JMX、JMS、JNDI、EJB、动态语言、远程访问、Web Service等的集成。
3.控制反转(IOC)
传统的软件设计是我们需要什么对象需要我们自己去创造,这中方式随着软件复杂度增加,对于系统的维护和变更将会十分困难的,因为存在了太多的耦合。
IOC思想是把这种主动的控制权转交出去,当我们需要某个对象的时候,才让“第三方”帮我们注入我们需要的对象。这种做法解除了类之间的耦合性,类与类之间的联系只需要通过IOC这个容器来桥接。
4.依赖注入(DI)
DI是对IOC思想的一种实现。原理是:对JavaBean的属性使用“反射”技术,将接口和实现相分离,动态地对一个类中的属性进行赋值,管理JavaBean的生命周期,以及管理多个JavaBean之间的注入关系,来达到两个模块之间的解耦。
5. 面向切面编程(AOP)
原理:动态代理。即在不改变原有代码的基础上,对原有的模块进行功能上的加强并进行扩展。
AOP主要实现对功能模块进行解耦。
6.Spring架构
Spring架构由上而下分为:
1、数据访问层(Data Access),包括了JDBC、ORM、OXM、JMS和事务管理。其中:
事务模块:主要用于Spring的事务管理,支持声明式和编程式两种方式。
spring-jdbc:提供了一个jdbc的样例模板,消除传统编码中的冗余部分,事务控制。
spring-orm:提供与“对象-关系”映射框架的无缝集成,包括Hibernate、JPA等,可以使用Spring的事务管理,无序额外的事务控制。
spring-oxm: 提供了一个对Object/XML映射实现,将java对象映射成XML数据,或者将XML数据映射成java对象,Object/XML映射实现包括JAXB、Castor、XMLBeans和XStream。、
spring-jms: 用于JMS(Java Messaging Service),提供一套 “消息生产者、消息消费者”模板用于更加简单的使用JMS,JMS用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
2. Web层:
spring-web :提供了基础的web功能。例如多文件上传、集成IoC容器等,并提供一个RestTemplate类来提供方便的Restful services访问。
spring-webmvc: 提供了一个Spring MVC Web框架和REST Web服务的实现。
spring-webmvc-portlet: 提供了在Portlet环境中使用MVC实现,并且反映了spring-webmvc模块的功能。
3. AOP模块层
spring-aop:提供了符合 AOP Alliance规范的面向切面的编程(aspect-oriented programming)实现,比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态的把这些功能添加到需要的代码中。
spring-instrument:在特定的应用程序服务器中支持类和类加载器的实现,比如Tomcat。
4、核心容器层:Beans、Core、Context、SpEL
spring-core和spring-beans:提供了框架的基础部分,包括控制反转和依赖注入功能。其中,Bean Factory是容器的核心,本质是“工厂设计模式”的实现,无需编程实现“单例设计模式”,单例完全由容器控制,提倡面向接口编程,所有应用程序对象及对象间关系由框架管理,从而真正把程序逻辑中的维护对象之间的依赖关系提取出来,所有这些依赖关系都由BeanFactory来维护。
spring-context:模块建立在core和bean模块提供的坚实基础上,集成Beans模块功能并添加资源绑定、数据验证、国际化、Java EE支持、容器生命周期、事件传播等;核心接口是ApplicationContext。
spring-expression:提供强大的表达式语言支持,支持访问和修改属性值、方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从Spring 容器获取Bean,支持列表投影、选择和一般的列表聚合等。
5、测试层(Test):提供Junit单元测试。