![](/img/trans.png)
[英]Spring transaction REQUIRED vs REQUIRES_NEW : Rollback Transaction
[英]Proxied REQUIRES_NEW method doesn't rollback (spring)
我已經在春季向自己注入了一項服務,以允許該服務對其自身進行事務調用。 不幸的是,我發現拋出NullPointerException並被捕獲的require_new方法沒有回滾新事務。 外部事務不會中斷,這是我想要的,但是我無法解釋為什么不回滾要求新事務的原因。 有任何想法嗎?
@Service(value="orderService")
@Transactional
public class OrderServiceImpl implements OrderService {
@Resource
private OrderService orderService; // transactional reference to this service
public void requiredTransMethod(){
try {
orderService.requiresNewTransMethod();
}catch(Throwable t){
LOG.error("changes from requiresNewTransMethod call should be rolled back right?", t);
}
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void requiresNewTransMethod() {
// database changes that are NOT rolled back
throw new NullPointerException("bla bla bla");
}
}
這可能是事務注釋不起作用的實例, 因為您是從同一類中調用它們的 。
Spring的AOP實現的工作方式(默認情況下)是通過使用代理類來進行的,對於從同一類中進行方法調用而言,這將無法正常工作 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.