1.启动类加注解 @EnableTransactionManagement,如果使用声明式注解(@Transactional),则不需要加
2.导致事务回滚只有两种情况
· 事务内代码抛出异常
· transactionStatus.setRollbackOnly();
3.多数据源或者有其他特定配置,进行事务配置,没有这方面需求可以不配
@SpringBootConfiguration
public class TransactionConfig {
@Bean
public TransactionTemplate transactionTemplate(DataSourceTransactionManager dataSourceTransactionManager) {
TransactionTemplate transactionTemplate = new TransactionTemplate(dataSourceTransactionManager);
// 可以设置事务隔离级别, 默认使用数据库默认隔离级别
// transactionTemplate.setIsolationLevel(TransactionDefinition.ISOLATION_DEFAULT);
// 可以设置事务传播方式
// transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
// 可以设置事务超时时间
// transactionTemplate.setTimeout(TransactionDefinition.TIMEOUT_DEFAULT);
return transactionTemplate;
}
}
4.代码
@Autowired
private Tra