我和春天有个问题:我需要重用bean的同一个实例两次,但没有把它单。
下面是一个简单的ApplicationContext:
<bean class="a.b.c.Provider" id="defaultProvider" scope="prototype">
<constructor-arg ref="lifecycle" />
<constructor-arg ref="propertySetter" />
</bean>
<bean name="lifecycle" class="a.b.c.Lifecycle" scope="prototype">
<constructor-arg ref="someParam" />
... and more args
</bean>
<bean id="propertySetter" class="a.b.c.PropertySetter" scope="prototype">
<constructor-arg ref="lifecycle" />
</bean>
所以,我需要有完全初始化Provider
与Lifecycle
和PropertySetter
内,这PropertySetter
必须包含参照相同的Lifecycle
,为Provider
有。
当我定义lifecycle
和propertySetter
为单身,它会导致大问题,因为如果我创建一个以上的Provider
,在所有情况下, Provider
类股相同的生命周期和属性setter,并且它打破应用程序逻辑。
当我尝试定义所有的bean作为原型,在生命周期Provider
和PropertySetter
是不一样=>例外一次。
我有一个解决办法:要传递给Provider
只Lifecycle
和创造PropertySetter
内Provider
的Java构造函数(通过扩展Provider
)。 它运作良好,但只是在我的本地环境。 在生产代码,我不能扩展3PTY Provider
一流的,所以我不能使用此解决方案。
请告诉我,什么最适合在这种情况下怎么办?