题目1:
账户1的初始金额为500,更新金额为501,并在更新账户1的过程中发现异常。问有和没有@transaction配置,结果会有什么不同?
假设:x=[有、没有]注解,y=账户1的金额
结果:
当x=[没]注解,y=501;
当x=[有]注解,y=500
题目2:
与题目1一样,不同的是有@transaction,这时更新账户1时发生异常。问内部处理异常(try..catch..)和抛出异常(throw..),结果会有什么不同?
假设:x=异常处理方式,y=账户1的金额
结果:
当x=内部处理异常,y=501;
当y=抛出异常,y=500
小结
1,@transaction属于java事务处理
2,当且仅当@transaction注解的方法内发生异常,且向外抛出时触发。
参考资料
spring官网指南:transaction manager
Spring Transaction属性之Propagation
java事务处理