spring事务模板使用
2015-12-02 16:25
477 查看
1.配置spring事务模板bean
<!--spring 模板事务-->
<bean id="transactionProxy" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="TransactionManager" />
<property name="transactionAttributes">
<props>
*****
</props>
</property>
</bean>
2.事务服务bean的配置
<bean id="xxxxDAO" class="com.xxxx.xxxxDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="xxxxServiceTarget" class="com.xxxx.xxxxServiceImpl" parent="service">
<property name="xxxxDAO" ref="xxxxDAO" />
</bean>
<bean id="xxxxService" parent="transactionProxy">
<property name="target" ref="xxxxServiceTarget" />
</bean>
使用占位符配置bean的方法:
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>
***.properties
</value>
<value>
***.properties
</value>
</list>
</property>
</bean>
3.事物根据方法名默认绑定
<!-- 配置jdbc模版 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" /> <!--连库信息-->
</bean>
<!-- 事务管理配置 如果使用orm框架,则替换为相应的事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 通过AOP配置提供事务增强,让service包下所有Bean的所有方法拥有事务 proxy-target-class="true" 强制使用CGLIB -->
<aop:config>
<aop:pointcut id="serviceMethods"
expression="execution(* com.navict.wxcc.service..*.*(..))" />
<aop:advisor pointcut-ref="serviceMethods" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="point" propagation="REQUIRES_NEW" />
<tx:method name="task" propagation="NEVER" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="query*" propagation="SUPPORTS" read-only="true" />
<tx:method name="load*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
1.配置spring事务模板bean
<!--spring 模板事务-->
<bean id="transactionProxy" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="TransactionManager" />
<property name="transactionAttributes">
<props>
*****
</props>
</property>
</bean>
2.事务服务bean的配置
<bean id="xxxxDAO" class="com.xxxx.xxxxDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="xxxxServiceTarget" class="com.xxxx.xxxxServiceImpl" parent="service">
<property name="xxxxDAO" ref="xxxxDAO" />
</bean>
<bean id="xxxxService" parent="transactionProxy">
<property name="target" ref="xxxxServiceTarget" />
</bean>
使用占位符配置bean的方法:
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>
***.properties
</value>
<value>
***.properties
</value>
</list>
</property>
</bean>
3.事物根据方法名默认绑定
<!-- 配置jdbc模版 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" /> <!--连库信息-->
</bean>
<!-- 事务管理配置 如果使用orm框架,则替换为相应的事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 通过AOP配置提供事务增强,让service包下所有Bean的所有方法拥有事务 proxy-target-class="true" 强制使用CGLIB -->
<aop:config>
<aop:pointcut id="serviceMethods"
expression="execution(* com.navict.wxcc.service..*.*(..))" />
<aop:advisor pointcut-ref="serviceMethods" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="point" propagation="REQUIRES_NEW" />
<tx:method name="task" propagation="NEVER" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="query*" propagation="SUPPORTS" read-only="true" />
<tx:method name="load*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
相关文章推荐
- 一、WorldWindJava2.0使用
- Spring和MyBatis环境整合
- Java基础编程之输入两个正整数m和n,求其最大公约数和最小公倍数。
- Java的值传递
- java ArrayList补充——subList
- Mybatis插入多条相同记录
- Java枚举
- spring调用存储过程
- springMVC return "中文乱码"解决方法
- 将android studio项目转换成eclipse
- java多线程
- 图文来教你在eclipse下用gradle 来打包Android
- PowerDesigner(八)-面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)
- Spring--quartz中cronExpression配置说明
- Spring MVC 3.1新特性 生产者、消费者请求限定
- 几种封装javaBean的方法
- Spring事务传播性与隔离级别
- Java内存模型
- Eclipse标准格式化代码快捷键Ctrl+Shift+F失效
- 转载Eclipse卡顿优化