我使用@Async创建了一个公共方法,并且我还为该类创建了一个bean。但是当我调用它时,它不会表现为异步并被阻止。然后我在application-bean中创建了一个执行器并使用了@Async(value =“executorname”),即使这不起作用,并且每次调用我都会得到“必须在AnnotationasyncExecutionAspect上设置beanFactory以访问合格的执行器”。
在我的应用程序bean.xml中 然后有几个执行程序和调度程序,我想使用一个新的执行程序。
请告诉我如何摆脱这个错误并获得异步行为 提前致谢
答案 0 :(得分:1)
我遇到了完全相同的问题并找到了我希望对你有用的解决方案(https://jira.spring.io/browse/SPR-10276)。
显然,如果你没有将Spring的AspectJ方面放入你的项目中(例如使用aspectj-maven-plugin),Spring的异步机制可以在你的bean中放置两次,一个由aspectj和其他放置通过代理。但是,由于它不知道它,AnnotationAsyncExecutionAspect不会被注入BeanFactory,你会看到你的断言异常。
要修复它,您必须指示Spring的Async机制使用AspectJ支持。在您的应用程序上下文中执行此操作。
<task:annotation-driven mode="aspectj"/>
我希望我可以提供任何帮助。
答案 1 :(得分:1)
对于基于注释的配置,您可以使用@EnableAsync(mode = AdviceMode.ASPECTJ)