Java-如何让@Transactional注解方法被无注解的方法调用时使事务生效

Java-如何让@Transactional注解方法被无注解的方法调用时使事务生效

问题

在springboot项目中,同一个类中,无@Transaction注解的方法调用另一个有@Transaction注解的方法,该如何让事务生效?

解法

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class TransactionalService {

    @Autowired
    private ApplicationContext applicationContext;

    public void outerMethod() {
        // 通过 applicationContext 获取代理对象后调用
        TransactionalService proxy = applicationContext.getBean(TransactionalService.class);
        proxy.innerMethod();
    }

    @Transactional
    public void innerMethod() {
        // 业务逻辑
    }
}

posted @ 2023-12-14 22:29  安浩阳  阅读(25)  评论(0编辑  收藏  举报