Spring框架的详细介绍( 八 )


</bean>

  1. 在业务层注入事务管理模板
<bean id="accountService" class="tx.demo1.AccountServiceImpl">
<property name="accountDao" ref="accountDao"/>
<property name="transactionTemplate" ref="transactionTemplate"/>
</bean>
  1. 编码实现事务管理
//ServiceImpl类中:
private TransactionTemplate transactionTemplate;
@Override
public void transfer(String from, String to, Double money) {
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus arg0) {
accountDao.outMoney(from, money);
accountDao.inMoney(to, money);
}
});
}
声明式事务管理(配置实现,基于AOP思想)
  1. XML 方式的声明式事务管理
  • 配置事务管理器
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
  • 配置事务通知
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="transfer" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
  • 配置aop事务
<aop:config>
<aop:pointcut expression="execution(* tx.demo2.AccountServiceImpl.*(..))" id="pointcut1"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut1"/>
</aop:config>
  1. 注解方式
  • 配置事务管理器,和上方一致
  • 开启事务管理的注解:
<tx:annotation-driven transaction-manager="transactionManager"/>
  • 在使用事务的类上添加一个注解@Transactional
引入自作者:supingemail
 
地址:https://blog.csdn.net/supingemail/article/details/85988220




推荐阅读