我需要一个异步执行bean的方法。为此,我将@Async注释添加到我的bean方法和@Configuration注释类的@EnableAsync,但从那时起,我的项目已停止加载,并出现以下错误:
ERROR 2014-12-10 17:03:26 org.springframework.web.context.ContextLoader:331 - 上下文 初始化失败 org.springframework.beans.factory.BeanCreationException:错误 用名称' webSecurityConfig'创建bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire字段:com.softech.dms.service.DetailService com.softech.dms.config.WebSecurityConfig.detailService;嵌套 异常是org.springframework.beans.factory.BeanCreationException: 创建名称为' detailService':注入自动装配的bean时出错 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire字段:com.softech.dms.service.UserService com.softech.dms.service.DetailService.userService;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 使用名称' userServiceImpl'创建bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire字段:com.softech.dms.service.CustomerService com.softech.dms.service.impl.UserServiceImpl.customerService;嵌套 异常是org.springframework.beans.factory.BeanCreationException: 创建名称' customerServiceImpl':注入的bean时出错 自动连接依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire字段:com.softech.dms.service.FolderService com.softech.dms.service.impl.CustomerServiceImpl.folderService;嵌套 异常是org.springframework.beans.factory.BeanCreationException: 创建名称为' folderServiceImpl':注入的bean时出错 自动连接依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire字段:private com.softech.dms.service.BookmarkService com.softech.dms.service.impl.FolderServiceImpl.bookmarkFolderService; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名称为' bookmarkServiceImpl':注入自动装配的bean 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire字段:private com.softech.dms.service.DocumentService com.softech.dms.service.impl.BookmarkServiceImpl.documentService; 嵌套异常是 org.springframework.beans.factory.BeanCurrentlyInCreationException: 创建名称为' documentServiceImpl':Bean名称的bean时出错 ' documentServiceImpl'已被注入其他豆类 其raw中的[documentHistoryServiceImpl,sharedDocumentServiceImpl] 版本作为循环引用的一部分,但最终已经 包裹。这意味着所述其他bean不使用最终版本 的豆子。这通常是过度渴望类型匹配的结果 - 考虑使用' getBeanNamesOfType'使用' allowEagerInit'旗 例如,关闭了。在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 在 org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 在 org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) 在 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 在 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1566) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1556) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334) 在java.util.concurrent.FutureTask.run(FutureTask.java:166)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:724)
当我删除@EnableAsync注释时,一切都完美无缺。如果我在这里错过了什么,请建议。
答案 0 :(得分:1)
尝试将default-lazy-init="true"
添加到 xml配置文件。
本文提供了有关循环依赖问题的一些说明:
答案 1 :(得分:0)
不要使用@Lazy(value = true)。
实现@Async注释有两种重要情况。