@Transactional、@Async就想在同一个类中调用怎么办?

317 阅读1分钟

@Transactional、@Async都是使用代理来实现事务控制和异步操作的,如果我们调用方和被调用方都在同一个类文件中,又没有做特别的处理,通常都是不生效的。

其实最好的办法就是自己获取代理对象,然后调用,也不用自己注入自己或者单独提到另外的一个类中

1.类上添加注解:

@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)

2.使用代理对象调用

((XxxxImpl) AopContext.currentProxy()).someMethod()

很简单的解决了不想提代码到另外的类,代理又能生效的问题。