1.不需要在启动类加上@EnableTransactionManagement,
@EnableTransactionManagement是 spring-tx 的注解,不是 spring-boot 的
spring-boot 会自动配置事务,相关的配置在 org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,在自动配置类里已经写好了 @EnableTransactionManagement
2.正常情况下是直接在方法上使用throw
抛出异常,@Transactional直接生效,但是如果想在代码里使用try catch捕获异常,则@Transactional会失效,解决办法如下:两处*必要*配置
@Transactional(rollbackFor = Exception.class)//必要
@Override
public Boolean testTransaction(String param) {
try {
deleteXX();
insertXX();
return true;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//必要
log.error("异常",e);
return false;
}
}