Spring Boot 2.0.2 教程 - 事务管理 - 09
原创    java_world    发表于:2018-10-22 13:57:42
  阅读 :43   收藏   编辑

上一篇:Spring Boot 2.0.2 教程 - mybatis多数据源配置,Mysql+Oracle - 08   

首先开启事务

在springboot启动类添加注解:@EnableTransactionManagement

  • jar包启动

@EnableTransactionManagement
@SpringBootApplication
public class DemoApplication {

   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
}
  • war包启动

@EnableTransactionManagement
@SpringBootApplication
public class SpringBootTomcatApplication extends SpringBootServletInitializer {

}

springboot打包war包启动,参考:spring boot 2.0.3 打war到tomcat启动 

使用@Transactional

springboot使用声明式的事务管理,在springboot中可以通过@Transactional注解的方式获得支持

该注解具体参数

属性类型描述
valueString可选的限定描述符,指定使用的事务管理器
propagationenum: Propagation可选的事务传播行为设置
isolationenum: Isolation可选的事务隔离级别设置
readOnlyboolean读写或只读事务,默认读写
timeoutint (in seconds granularity)事务超时时间设置
rollbackForClass对象数组,必须继承自Throwable导致事务回滚的异常类数组
rollbackForClassName类名数组,必须继承自Throwable导致事务回滚的异常类名字数组
noRollbackForClass对象数组,必须继承自Throwable不会导致事务回滚的异常类数组
noRollbackForClassName类名数组,必须继承自Throwable不会导致事务回滚的异常类名字数组

多数据源事务

在多数据源使用事务时,应指定transactionManager,如在上一节的多数据中

ExampleDaoTest.java

//指定transactionManager为mysql
@Test
@Transactional(transactionManager = "mysqlTransactionManager",rollbackFor = Exception.class)
public void saveBean(){
    Example bean = new Example();
    bean.setUserName("ZhangSan");
    bean.setAddr("ShangHai");
    bean.setSex((byte)1);
    exampleDao.insert(bean);
    System.out.println(1/0);
}


评论
条评论