Spring に問題があります。Bean の同じインスタンスを 2 回再利用する必要がありますが、シングルトンにする必要はありません。
簡単な 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
、これにはhaveと同じ への参照が含まれている必要があります。Lifecycle
PropertySetter
PropertySetter
Lifecycle
Provider
lifecycle
とをシングルトンとして定義するとpropertySetter
、大きな問題が発生します。複数の を作成すると、クラスProvider
のすべてのインスタンスがProvider
同じライフサイクルとプロパティ セッターを共有し、アプリケーション ロジックが壊れてしまうからです。
すべての Bean をプロトタイプとして定義しようとすると、中Provider
と中のライフサイクルPropertySetter
が同じではありません => 例外が再び発生します。
私には1つの解決策があります: JavaコンストラクターProvider
のみに渡して内部Lifecycle
で作成することです(を拡張することにより)。それはうまく機能していますが、私のローカル環境でのみです。プロダクション コードでは 3ptyクラスを拡張できないため、このソリューションは使用できません。PropertySetter
Provider
Provider
Provider
この状況で何をするのが最も適切か教えてください。