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)
浙公网安备 33010602011771号