web应用开发知识之spring(4)

spring AOP IOC 编程式事务等等

 

使用spring时,对象的创建及管理都是由spring容器负责,spring自带了几种容器实现,可以归为两种不同的类型:

(1)Bean工厂,BeanFactory是最简单的容器,提供基本的DI支持

(2)应用上下文,是基于BeanFactory之上构建,并提供面向应用的服务,例如从属性文件解析文本信息,以及发布应用事件给感兴趣的事件监听者的能力.

 

spring的思想之一: 依赖注入(依赖可通过构造器注入,setter注入)

(1)程序中察觉不到使用了spring,代码不与spring框架耦合

(2)对象间的依赖关系是基于接口引用,而不直接与实现耦合

(3)在程序中面向接口编程,在spring框架的xml中配置对象的创建与装配对象间的依赖关系,对象的创建与管理交由Spring 的Application Context负责

 

总之,依赖注入让相互协作的软件组件保持松散耦合

 

 

spring的思想之二: AOP

(1)AOP避免了业务对象与系统级服务(如日志记录,安全,事务等)结合得过于紧密,业务对象应该仅仅关系自己的核心业务功能,AOP能使系统级服务与核心业务逻辑相分离

 

(2)■通过在spring xml中将系统级服务配置成切面,然后配置好切入点及要应用的通知

 

(3)切面提供了取代继承和委托的另一种选择,在使用面向切面编程时,我们仍然在一个地方定义通用功能,但是我们可以通过声明的方式定义这个功能以何种方式在何处应用,而无需修改受影响的类,横切关注点可以被模块化为特殊的类,这些类被称为切面,这样做有两个好处:首先,每个关注点现在者只集中于一处,而不是分散到多处代码中,其次,服务模块更简洁,因为化们只包含核心业务逻辑,而非核心的功能被转移到切面了.

 

(4)AOP的实现原理:

        Spring AOP是基于动态代理的,通过在代理类中包裹切面,Spring在运行期将切面织入到Spring管理的Bean中,并且中当在应用中需要被代理的Bean时,Spring才会创建代理对象,Spring只支持方法连接点,但是像AspectJ AOP和Jboss AOP ,是支持字段和构造器接入点的

        使用Spring AOP,我们可以为Bean添加新的方法,代理会拦截调用并委托给实现该方法的其他对象:


web应用开发知识之spring(4)
 

 

AOP术语解析:

1 通知(Advice): 通知定义了切面是什么以及何时使用,Spring切面可以应用5种类型的通知

(1)Before: 在方法被调用之前调用通知(通知方法即是切面的方法)

(2)After

(3)After-returning

(4)After-throwing

(5)Around: 环绕通知,方法被调用前调用后都要求调用通知

 

2 连接点(Joinpoint):


web应用开发知识之spring(4)
 

 

3 切点: 切点用于准确定位应该在可处应用切面的通知(通知方法即是切面的方法)

 

 

Spring事务管理

 

1 Spring提供了对编码式和声明式事务管理的支持

 

2 编码式事务: 如果应用程序只使用一种持久化资源,spring可以使用持久化机制本身所提供的事务改天 支持,包括JDBC,Hibernate以及java持久化API,如果应用程序的事务跨多个资源,那么spring会使用第三方的JTA,实现分页式事务

 

3 声明式事务: 编码式事务允许用户在代码中精确定义事务的边界,而声明式事务(基于AOP)有助于用户将操作与事务规则进行解耦.

 

4 Spring的事务管理器将事务管理的职责委托给特定平台的事务实现,如org.springframework.orm.hibernate3.HibernateTransactionManager等

 

5 在spring中,声明式事务是通过事务属性来定义的,事务属性描述了事务策略如何应用到方法上,事务属性包含了5个方面,如下图所示:


web应用开发知识之spring(4)
 

 

 
web应用开发知识之spring(4)
 

 


web应用开发知识之spring(4)