在迁移到spring boot 2时解决了这个问题。我有这样的配置类:
@Configuration
@EnableScheduling
@EnableAsync(mode = AdviceMode.ASPECTJ)
public class AsyncConfig implements SchedulingConfigurer, AsyncConfigurer
{
// ...
}
问题是当我设置mode = AdviceMode.ASPECTJ时,我在创建自定义bean时遇到异常:
@Bean
public EhCacheCleaner ehcacheCleaner()
{
EhCacheCleaner cacheCleaner = new EhCacheCleaner();
cacheCleaner.setCacheManagersNames("hibernateCache", "sampleCache");
return cacheCleaner;
}
org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为'cacheCleanerService'的bean时出错:通过字段'ehcacheCleaner'表示的不满足的依赖关系;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建在类路径资源[com / panbet / externalbet / core / config / AsyncConfig.class]中定义的名称为“ ehcacheCleaner”的bean时出错:找不到匹配的工厂方法:工厂bean 'asyncConfig';工厂方法“ ehcacheCleaner()”。检查是否存在具有指定名称的方法,并且该方法是非静态的。
如果我删除 mode = AdviceMode.ASPECTJ ,则此异常消失,但@Async方法不起作用。例外是:
必须在AnnotationAsyncExecutionAspect上设置BeanFactory才能访问合格的执行程序
如何摆脱这种情况?例外的原因是什么?谢谢。