//添加注解配置
@EnableTransactionManagement
@SpringBootApplication
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
//添加到
@Transactional
public void addUser(){}
出现的问题如下
1. No transaction aspect-managed TransactionStatus in scope
如果当前事务操作的实现所在方法没有开启事务,就会报出这样的异常。
例如你在A方法调用B方法,B方法开启了事务,A方法没有开启事务,B方法出错被A方法捕获后,在A方法中进行事务回滚,就会出现这样的异常。因为方法A并没有事务。
解决办法2:可以新建一个service, 在这个类里的方法加@Transactional,原来的类调用这个service的方法解决问题
2. 刚开始定义RuntimeException事务没有反应,1/0,NullPointerException
//手动回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
3. No qualifying bean of type ‘org.springframework.transaction.TransactionManager’ available
解决方案添加transactionManager定义
在DatabaseConfig中添加transactionManager的定义
//配置Transaction,统一管理
@Bean(name="transactionManager")
public PlatformTransactionManager transactionManager(){
return new DataSourceTransactionManager(dataSource());
}