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

发布时间 2023-12-14 22:31:48作者: 安浩阳

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() {
        // 业务逻辑
    }
}