两个答案:
a)不要这样做。使用
@Transactional在服务层或DAO层,但不能同时(服务层是通常的选择,因为你可能希望每一个服务方法一个交易)
b)如果这样做,会发生什么情况取决于注释的
propagation属性,
@Transactional并在本节中进行描述:10.5.7事务传播。基本上:
PROPAGATION_REQUIRED意味着同一事务将用于两种方法,同时
PROPAGATION_REQUIRES_NEW开始新事务。
关于你的评论:
当然,我不断阅读并意识到,当我使用代理时,第二种方法将不会由事务代理管理,因此就像其他任何方法调用一样。
在你的情况下,这是不正确的(仅当两个方法都在同一类中时)。
如果一个bean有方法
a和
b,和
a电话
b,然后
b叫上实际的方法,而不是代理,因为它是从代理中调用(豆不知道它是代理到外面的世界)。
proxy bean a() --> a() | V b() --> b()
但是,在你的情况下,服务将具有注入的dao对象,该对象本身就是代理,因此你将遇到以下情况:
proxy beanservice a() --> a() | /---------/ | Vdao b() --> b()



