bean 1
<bean id="rebateInBo" class="com.shunwang.swpay.rebate.bo.imp.RebateInBoImp" >
<property name="dao">
<ref bean="rebateInDao"/>
</property>
<property name="rebateOutBo">
<ref bean="rebateOutBo"/>
</property>
<property name="bussPartnerBo">
<ref bean="bussPartnerBo"/>
</property>
</bean>
bean 2
<bean id="rebateOutBo" class="com.shunwang.swpay.rebate.bo.imp.RebateOutBoImp">
<property name="dao">
<ref bean="rebateOutDao"/>
</property>
<property name="rebateInBo">
<ref bean="rebateInBo"/>
</property>
</bean>
启动异常:
[ERROR]2011-03-11 14:53:29,687 MESSAGE : Context initialization failed
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'rebateInBo': Bean with name 'rebateInBo' has been injected into other beans [rebateOutBo] in its raw version as part of a circular reference, but has eventually been wrapped (for example as part of auto-proxy creation). This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:431)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
解决方法:
lazy-init="true" 加到一个bean的属性里就好了,如下:
<bean id="rebateInBo" class="com.shunwang.swpay.rebate.bo.imp.RebateInBoImp" lazy-init="true">
<property name="dao">
<ref bean="rebateInDao"/>
</property>
<property name="rebateOutBo">
<ref bean="rebateOutBo"/>
</property>
<property name="bussPartnerBo">
<ref bean="bussPartnerBo"/>
</property>
</bean>