我的bean定义如下
<bean id="batchManagementService" class="com.amdocs.dc.sprint.batch.service.BatchManagementServiceImpl" autowire-candidate="false">
<property name="repository" ref="batchPersistenceRepository" />
<property name="timeService" ref="batchTimeService" />
<property name="validator" ref="batchValidator" />
</bean>
我在不同的模块中将这个bean引用到两个地方。 然而,它被初始化为两个不同的值。
implementsor类包含事务方法。 任何有关这方面的帮助将不胜感激..
答案 0 :(得分:0)
对我来说描述不太清楚,但听起来你的applicationContext在模块中配置错误。 也许你尝试一下这样的方法: MODULE_A: -applicationContextA.xml MODULE_B(应该使用MODULE_A的bean) -applicationContextB.xml MODULE_C(应该使用MODULE_B和MODULE_A) -applicationContextC.xml
错误方法是:
applicationContextA.xml:
<beans xmlns="http://www.springframework.org/schema/beans">
...
<bean id="batchManagementService"...>
applicationContextB.xml:
<beans xmlns="http://www.springframework.org/schema/beans">
<import resource="applicationContextA.xml"/>
<bean id=anotherBean...
applicationContextC.xml:
<beans xmlns="http://www.springframework.org/schema/beans">
<import resource="applicationContextB.xml"/>
<bean id=anotherBean...
在这种情况下,当创建applicationContextC时,batchManagementService将被实例化两次。
试试这个: applicationContextA.xml:
<beans xmlns="http://www.springframework.org/schema/beans">
...
<bean id="batchManagementService"...>
applicationContextB.xml:
<beans xmlns="http://www.springframework.org/schema/beans">
<!--No import here! -->
<!--<import resource="applicationContextA.xml"/>-->
<bean id=anotherBean...
applicationContextC.xml:
<beans xmlns="http://www.springframework.org/schema/beans">
<!-- No import here -->
<!--<import resource="applicationContextB.xml"/>-->
<bean id=anotherBean...
applicationContextFull.xml
<beans xmlns="http://www.springframework.org/schema/beans">
<import resource="applicationContextA.xml"/>
<import resource="applicationContextB.xml"/>
<import resource="applicationContextC.xml"/>
</beans>
,并尝试使用applicationContextFull.xml启动应用程序上下文。 希望这会有所帮助。