如何在Spring中连接相互依赖的bean?

Sat*_*ish 19 java spring dependency-injection

我想声明两个bean并使用Spring依赖注入实例化它们?

<bean id="sessionFactory" class="SessionFactoryImpl">
 <property name="entityInterceptor" ref="entityInterceptor"/>
</bean>

<bean id="entityInterceptor" class="EntityInterceptorImpl">
 <property name="sessionFactory" ref="sessionFactory"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

但Spring抛出一个异常,说"当前处于创建状态的FactoryBean从getObject返回null"

为什么相互依赖的bean布线不能在这里工作?我应该在任何地方指定defferred属性绑定吗?

nee*_*esh 13

不幸的是容器初始化在Spring中的工作方式,bean只有在完全初始化后才能注入另一个bean.在您的情况下,您有一个循环依赖项,可以防止bean被初始化,因为它们相互依赖.要解决这个问题,您可以在其中一个bean中实现BeanFactoryAware,并使用beanFactory.getBean("beanName")获取对另一个bean的引用.