簡體   English   中英

代理的REQUIRES_NEW方法不會回滾(春季)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM