spring异常与事务回滚
默认情况下,spring框架只捕获RuntimeException异常及其子类;对于Exception异常是不会回滚的,如果相让Spring来改变这种默认的行为,那么可以在相应的方法上面加入@Transactional(rollbackFor=MyException.class)设置成回滚,从而改变默认的行为。 令Spring的几种注解事务传播行为 : Required:业务方法需要在一个事务中运行。如果方法运行时,已经在一个事务中,那么加入到该事务,否则自己创建一个新的事务。一般spring默认都是这种事务,像保存,删除,修改等都是这种事务。80%的情况下都用这种事务。 Not_Supported:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为它开启事务。如果方法在一个事务中被调用,该事务会被挂起,在方法调用结束后,原先的事务便会执行。 Requiresnew:属性不管是否存在事务,业务方法总会为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有事务被挂起,新的事务会被创建,直到方法执行结束,新事务才算结束,原先事务才会恢复执行。 Mandatory:该属性指定业务方法必须在一个事务中运行,业务方法不能发起自己的事略。如果业务方法在没有事务的环境下调用,容器会抛出例外。 Supports:这一事务属性表明,如果方法在某个事务范围内被调用