spring事务-编程式事务控制-代码中控制

62 阅读1分钟

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