spring事务失效场景1:
非事务方法A里调用事务方法B,如果A和B在同一个类中,那么B的事务会失效。
如果A也加上事务,但在A中捕获了B的异常,那么B的事务同样会失效。
但如果A和B不在同一个类里,A无事务,不会影响B的事务,而且A中捕获B的异常,B出现异常时B的事务也不会提交,最后出现org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only。
==========
Spring的@Async异步失效场景1:
方法A调用异步方法B,如果A和B在一个类中,那么B的异步将失效。
Spring的@Async异步失效场景2:
异步方法的返回值只能为void或者Future。
异步方法必须是public方法。
异步方法不要定义为static。