在spring中一般使用声明式事务管理,在一些特殊情况下,比如业务方法中记录日志,业务方法失败了,但日志仍然要记录,如
method A{
xxxLogService.log(“日志信息”); //日志记录到数据库中
mothod B
}
A方法可以使用spring的声明式事务进行管理,默认情况下,B出现异常时,日志信息也回滚了,不符合我们的要求。因此,可以在log方法上注解
@Transactional(propagation=Propagation.REQUIRES_NEW) ,表示当log方法运行时,A方法的事务环境要挂起,在log中启用新事务,A方法事务的回滚不影响log方法的事务。
配置步骤如下:
在spring中使用注解事务,分为两步:
1、在spring的配置文件中applicationContext增加<tx:annotation-driven transaction-manager="transactionManager"/>
2、在需要新事务的方法上增加: @Transactional(propagation=Propagation.REQUIRES_NEW) ,本文中该注解写到log方法上。