Sevice中是否可以捕获异常
•
分情况来待这个问题
•
1.
如果
service
方法没有其他
sevice
方法,异常可以被捕获,
spring
的事务机制,感受不到异常存在,数据不回滚
•
2
否则:不能捕获,会引起问题,
required
事务,由于具有传播性,被调用的
service
方法被调用的
service
捕获,会导致当前事务的状态被修改,在外层数据提交的时候,会报出
org.springframework.transaction.UnexpectedRollbackException
: Transaction rolled back because ithas been marked as rollback-only
•
参考网站
•
http://stackoverflow.com/questions/2007097/unexpectedrollbackexception-a-full-scenario-analysis
单独事务中是否可以多线程并发
•
两个问题:
•
1.
主线程 所在事务 和 子线程 事务 是同一个事务吗?
•
2
事务的传播机制是什么?
•
•
是不同的事务,这样用有风险,易引起数据不一致;如果都是独立任务,可以使用;所以要分清事务的边界