如何解决Transaction 注解,方法内部调用无效问题
前提: Transaction 注解开启事务,是通过代理对象对方法进行封装开启和关闭事务,但生效的的条件是外部调用,而内部调用并不会走代理对象,这就造成了事务失效。 解决办法: 1.逻辑优化,避免内部调用(自己评估) 2.通过AopContext.currentProxy()获取当前类的代理对象 ((ArticleService)AopContext.currentProxy()).getArticleById(id); 注意:需要设置 exposeProxy=true 配置方式: <aop:aspectj-autoproxy proxy-target-class="true"expose-proxy="true"/> 注解方式: @SpringBootApplication @EnableAspectJAutoProxy(exposeProxy=true) public class DatacenterApplication { public static void main(String[] args) { SpringApplication.run(DatacenterApplication.class, args); } } 3.手动获取bean @Component public class SpringUtils implements