spring事物配置

 

基于注解的事物:

<tx:annotation-driven />

需配置 org.springframework.jdbc.datasource.DataSourceTransactionManager

在service中加入 @transactional

 1 默认遇到throw new RuntimeException("...");会回滚
 2     需要捕获的throw new Exception("...");不会回滚
 3 
 4     // 指定回滚
 5     @Transactional(rollbackFor=Exception.class)
 6         public void methodName() {
 7            // 不会回滚
 8            throw new Exception("...");
 9         }
10     //指定不回滚
11     @Transactional(noRollbackFor=Exception.class)
12         public ItimDaoImpl getItemDaoImpl() {
13             // 会回滚
14             throw new RuntimeException("注释");
15         }
16 
17     // 如果有事务,那么加入事务,没有的话新建一个(不写的情况下)
18     @Transactional(propagation=Propagation.REQUIRED)
19     // 容器不为这个方法开启事务
20     @Transactional(propagation=Propagation.NOT_SUPPORTED)
21     // 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
22     @Transactional(propagation=Propagation.REQUIRES_NEW)
23     // 必须在一个已有的事务中执行,否则抛出异常
24     @Transactional(propagation=Propagation.MANDATORY)
25     // 必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
26     @Transactional(propagation=Propagation.NEVER)
27     // 如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.
28     @Transactional(propagation=Propagation.SUPPORTS)
29    
30    
31     @Transactional(propagation=Propagation.NESTED)
32     // readOnly=true只读,不能更新,删除
33     @Transactional (propagation = Propagation.REQUIRED,readOnly=true)
34     // 设置超时时间
35     @Transactional (propagation = Propagation.REQUIRED,timeout=30)
36     // 设置数据库隔离级别
37     @Transactional (propagation = Propagation.REQUIRED,isolation=Isolation.DEFAULT)
@transactional参考资料

 

摘自:http://blog.sina.com.cn/s/blog_69398ed90102uwy0.html

推荐:https://my.oschina.net/xiejunbo/blog/518254

posted @ 2017-03-10 11:14  戏子诺  阅读(129)  评论(0)    收藏  举报