大佬教程收集整理的这篇文章主要介绍了服务中的Spring @Async方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我解决了第三个方法(将其分为两个Bean),将Async方法修改器切换为
@service
public class Myservice {
@autowired
MyAsyncservice myAsyncservice;
public worker(){
myAsyncservice.asyncJob();
}
}
@service
public class MyAsyncservice {
@Async
public asyncJob(){ // switched to public
...
}
}
我的service Bean带有一个同步方法,该同步方法调用了内部异步方法:
@service
public class Myservice {
public worker(){
asyncJob();
}
@Async
asyncJob(){
...
}
}
问题在于asyncJob并不是真的以异步方式调用。我发现这是行不通的,因为内部调用会跳过 AOP代理 。
因此,我尝试 自引用 Bean:
@service
public class Myservice {
Myservice mySelf;
@Autowired
ApplicationContext cnt;
@PostConstruct
public init(){
mySelf=(MyservicE)cnt.getBean("myservice");
}
public worker(){
mySelf.asyncJob();
}
@Async
asyncJob(){
...
}
}
它失败了 。再次没有异步调用。
因此,我尝试 将其 分为两个bean:
@service
public class Myservice {
@Autowired
MyAsyncservice myAsyncservice;
public worker(){
myAsyncservice.asyncJob();
}
}
@service
public class MyAsyncservice {
@Async
asyncJob(){
...
}
}
再次失败 。
唯一的工作方法是从 Controller Bean 调用它:
@Controller
public class MyController {
@Autowired
MyAsyncservice myAsyncservice;
@requestMapping("/test")
public worker(){
myAsyncservice.asyncJob();
}
}
@service
public class MyAsyncservice {
@Async
public asyncJob(){
...
}
}
但是在这种情况下,这是一项服务工作……为什么我不能从服务中调用它?
以上是大佬教程为你收集整理的服务中的Spring @Async方法全部内容,希望文章能够帮你解决服务中的Spring @Async方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。