我有一个弹簧组件,它有一些方法作为@Async
。
我想创建一个私有方法并运行@Async
,但它不会工作,因为spring不帮助从bean内的自我调用…
是否有一个简单的方法允许一个特定的私有方法允许AOP @Async?或者获得一个线程池并手动执行更简单?
不是调用this
上的async方法,而是注入bean并调用bean上的方法。这是一个例子:
public class MyService {
@Lazy
@Autowired
private MyService myService;
public void doStuff() throws Exception {
myService.doStuffAsync();
System.out.println("doing stuff sync.");
}
@Async
public void doStuffAsync() throws Exception {
TimeUnit.SECONDS.sleep(3);
System.out.println("doing stuff async.");
}
}
- 你必须使用
@Lazy
! - 你必须调用
myService.doStuffAsync()
而不是this.doStuffAsync()