我有一个Spring问题:我需要重复使用同一个bean实例两次,但不要使它成为单例。重复使用原型bean的同一个实例两次 - Spring
这里是一个简短的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>
所以,我需要与Lifecycle
和PropertySetter
内, 已经完全初始化Provider
这PropertySetter
必须包含相同的Lifecycle
参考,为Provider
有。
当我定义lifecycle
和propertySetter
为单身,它会导致大问题,因为 如果我创建一个以上的Provider
的Provider
类股相同的生命周期 和属性setter所有实例,它打破应用程序逻辑。
当我尝试将所有bean定义为原型时,Provider
和PropertySetter
中的生命周期再次出现异常=>异常。
我有一个解决办法:传递给Provider
仅Lifecycle
并创建PropertySetter
内部Provider
java的构造(由延伸Provider
)。 它运转良好,但只在我的当地环境中。在生产代码中,我无法扩展3pty Provider
类,所以我不能使用此解决方案。
请告诉我,在这种情况下最适合做什么?
* *为什么你需要做到这一点? –
@DaveNewton我需要这样做是因为需求。这是一个复杂应用程序的小设计不好的插件,我不能重新设计它。 – WinnieRazor