12

org.springframework.beans.factory.BeanCurrentlyInCreationException:创建名为“org.springframework.cache.annotation.AnnotationCacheOperationSource#0”的bean时出错:名为“org.springframework.cache.annotation.AnnotationCacheOperationSource#0”的bean已注入其他bean [org.springframework.cache.config.internalCacheAdvisor] 在其原始版本中作为循环引用的一部分,但最终已被包装。这意味着所说的其他 bean 不使用 bean 的最终版本。这通常是过度渴望类型匹配的结果 - 例如,考虑使用 'getBeanNamesOfType' 并关闭 'allowEagerInit' 标志。在 org.springframework.beans 的 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)。springframework.beans.factory.BeanCurrentlyInCreationException:创建名为“org.springframework.cache.annotation.AnnotationCacheOperationSource#0”的bean时出错:名为“org.springframework.cache.annotation.AnnotationCacheOperationSource#0”的bean已注入其他bean [ org.springframework.cache.config.internalCacheAdvisor] 在其原始版本中作为循环引用的一部分,但最终已被包装。这意味着所说的其他 bean 不使用 bean 的最终版本。这通常是过度渴望类型匹配的结果 - 例如,考虑使用 'getBeanNamesOfType' 并关闭 'allowEagerInit' 标志。在 org.springframework.beans.factory 的 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)。

我的 application-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans default-lazy-init="true">
    <context:annotation-config />
    <!-- Scans within the base package of the application for @Components to 
        configure as beans -->
    <context:component-scan base-package="com.voterite.service" />
    
    <aop:aspectj-autoproxy />
    
    <cache:annotation-driven cache-manager="cacheManager" />
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="ehcache" />
    </bean>
    <!-- Ehcache library setup -->
    <bean id="ehcache"
        class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="/WEB-INF/ehcache/ehcache.xml" />
    </bean>
</beans>

我正在使用@cachable和 aop 注释如何解决BeanCurrentlyInCreationException:请帮助

4

2 回答 2

14

@Lazy为 Validator 类中的字段添加了注释:

@Autowired
@Lazy
private Service service;

当遇到org.springframework.beans.factory.BeanCurrentlyInCreationException时:

“创建名称为“服务”的 bean 时出错:名称为“服务”的 Bean 已被注入其他 bean [Validator]...”

“过度渴望类型匹配的结果 - 考虑使用 getBeanNamesOfType 并关闭 allowEagerInit 标志”

于 2018-10-14T20:49:07.513 回答
1

default-lazy-init="true"在您的中使用applicationContext.xml,但这仅在开发期间。

对于暂存或测试构建,我们必须将其删除,因为它会捕获所有初始 bean 错误。

我发现我的机器上出现了一个异常,而不是同事的,这就是我使用它并恢复工作的原因。

例如在顶部使用beans default-lazy-init="true" xmlns= your xmlns

于 2013-10-18T12:27:10.307 回答