Spring @Transactional边界

Gri*_*Dog 11 java spring

我在服务层使用@Transactional.如果我使用@Transactional注释两个更新服务方法(使用默认设置)并且控制器方法正在调用这两个方法来执行其操作,那么两个服务方法是否都使用相同的事务?

似乎他们没有,我正在寻找对此的确认.在我看来,为了让两个方法都使用相同的事务,我需要在服务中编写第三个方法,用@Transactional注释它,然后从那里调用原来的两个方法.

hvg*_*des 13

你所说的一切都是正确的,包括如何解决这个问题.这可能是实施协调所有其他服务的Facade服务的好时机.这样,使用过的服务将参与Facade服务的交易.

  • 同意,除非它不是缺陷,所以我不会称之为“问题”。有时您想调用两个服务方法,每个方法都在自己的事务中运行。例如,假设一个服务调用完成了一次购买,而第二个服务调用根据用户看到的广告决定在用户​​浏览器窗口的边缘显示哪个广告。如果广告逻辑失败,您不会想要回滚购买;您希望显示带有后备广告的购买完整屏幕。 (2认同)