最佳答案
我想知道当你用@Transactional
注释一个方法时实际发生了什么?
当然,我知道Spring会将该方法包装在一个事务中
但是,我有以下疑问:
注意:由于这种机制是基于代理的,只有通过代理进入的“外部”方法调用才会被拦截。这意味着“自调用”,即目标对象中的方法调用目标对象的其他方法,不会在运行时导致实际事务,即使被调用的方法标记为
@Transactional
!
来源:http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
为什么只有外部方法调用将在事务下,而不是自调用方法?