1

Spring フレームワークでプリロードを使用したため、コンテナーにロードされたときに Bean が作成されます。私の Bean インスタンスはシングルトンです。しかし、遅延読み込みを使用したい。私の理解では、遅延読み込みを使用すると、Bean が要求されたときに Bean のインスタンスが作成されますが、コンテナーには存在しません。

しかし、私の要件は、その Bean の操作が終了したときに、その Bean インスタンスをガベージ コレクションしたいということです。繰り返しになりますが、その Bean が要求されたときに、遅延読み込みの方法で Bean を再度作成したいと思います。

したがって、Bean インスタンスがガベージ コレクションされた後、Bean インスタンスを作成するために Bean がコンテナーに再度デプロイされる時期を知る限り、コンテナーに再デプロイする必要があります。使用後に実行時に Bean インスタンスをガベージ コレクションし、要求されたときにそのインスタンスを再度作成します。再デプロイせずにSpringとTomcatを使用することは可能ですか?

4

2 に答える 2

2

prototypeスコープ Beanを使用する必要があります。これらは、要求時に作成され、通常のオブジェクトのようにガベージ コレクションされる Bean です。

ドキュメントページを見てください。スコープをプロトタイプに設定して、Bean をプロトタイプとして宣言できます。

<bean id="accountService" class="com.foo.DefaultAccountService" scope="prototype"/>
于 2013-01-30T12:42:31.027 に答える
2

Bean スコープは、おそらく最も簡単な方法です。おそらく「prototype」が必要ですが、「session」と「request」も Web コンテナー内で使用できます。

「セッション」または「リクエスト」を使用していて、Bean をシングルトン Bean に注入している場合は、次を使用する必要があります<aop:scoped-proxy/>

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
    <aop:scoped-proxy/>
</bean>
于 2013-01-30T13:58:22.313 に答える