spring研究【一】
来源:互联网 发布:福师大校园网络电视 编辑:程序博客网 时间:2024/05/20 23:02
Spring声明式事务处理
Spring声明式事务处理也主要使用了IoC,AOP思想,提供了TransactionInterceptor拦截器和常用的代理类TransactionProxyFactoryBean,可以直接对组件进行事务代理。
使用TransactionInterceptor的步骤:
(1)定义数据源,事务管理类
(2)定义事务拦截器,例如:
<bean id = "transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager"/></property>
<property name="transactionAttributeSource">
<value>com.test.UserManager.*r=PROPAGATION_REQUIRED</value>
</property>
</bean>
(3)为组件声明一个代理类:ProxyFactoryBean
<bean id="userManager"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.test.UserManager</value>
</property>
<property name="interceptorNames">
<list><idref local="transactionInterceptor"/></list>
</property>
</bean>
使用TransactionProxyFactoryBean:
<bean id="userManager"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="target"><ref local="userManagerTarget"/></property>
<property name="transactionAttributes"><props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property></bean>
TransactionProxyFactoryBean只是为组件的事务代理,如果我们要给组件添加一些业务方面的验证等,可以使用TransactionTemplate加拦截器方式,为组件添加多个拦截器,spring AOP中提供了三类Advice,即前增强,后增强,抛出异常时的增强,可以灵活使用.
在 spring 中一共定义了六种事务传播属性, 如果你觉得看起来不够直观, 那么我来转贴一个满大街都有的翻译
引用
PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
前六个策略类似于EJB CMT,第七个(PROPAGATION_NESTED)是Spring所提供的一个特殊变量。
它要求事务管理器或者使用JDBC 3.0 Savepoint API提供嵌套事务行为(如Spring的DataSourceTransactionManager).
- spring研究【一】
- spring Ioc研究(一)
- Spring深入研究(一)
- Spring Framework研究(一)RESTFUL
- Spring IOC 容器研究日记(一)
- spring 源码研究---core包总结一
- Jpetstore研究(一):spring MVC + jpetstore + mysql搭建
- Spring框架研究总结之AOP(一)
- 打算开始研究spring
- spring jpetstore研究
- Spring AOP 2.0 研究
- 研究Spring MVC
- spring mvc 研究
- spring mvc 研究
- spring security3研究
- spring研究点滴
- Spring Bean研究
- ThreadLocal深入研究-spring
- 今天终于弄清楚了:为什么为ReBar发送RB_SETPARENT后,它就会消失。
- CDHtmlDialog类中的OnPaint()
- 单链表的插入
- 单链表的反转
- 配置文件
- spring研究【一】
- Paragon Partition Manager 9.0 Professional管理磁盘分区
- 关于贴图
- 中移动与谷歌合作发力移动互联网 下调TD上网费
- 关于missing } in XML expression的解决方案
- 浅谈企业管理心得
- 几种图像处理库的研究
- 曲线曲面造型系统Demo1
- 使用asp.net2.0开发的创业网已经上线了。