3

サーバー上で Bean のメソッド (メソッド A としましょう) の最初の申請を実行すると、すべて問題ないように見えますが、このキャリア RESTWS Bean (メソッド B としましょう) で任意の申請を 2 回目に実行すると、使用される dao は同じです。キャリアDAOインスタンス。このキャリアRESTWS Beanが呼び出されるたびに、この問題を回避し、インジェクションでdaoの新しいインスタンスを使用するようにするにはどうすればよいですか?

xml ファイル内の Beans 構成:

<bean id="carrierRESTWS" class="ar.com.anovo.controllers.rest.CarrierRESTWS">
        <property name="carrierDAO" ref="carrierDAO"/>
 </bean>

<bean id="carrierDAO" class="ar.com.anovo.dao.CarrierDAO"></bean>
4

3 に答える 3

1

「carrierDAO」のスコープを「prototype」に設定します。

<bean id="carrierDAO" class="ar.com.anovo.dao.CarrierDAO" scope="prototype" />

インジェクションが必要になると、これにより新しいインスタンスが作成されます。

スコープの詳細については、Spring Docを参照してください。

于 2015-09-22T20:50:23.533 に答える
0

春のデフォルトのスコープはsingletonであるため、@Stefan が で示すように、毎回新しいインスタンスを作成するスコープを明示的に設定する必要がありますprototype

于 2015-09-22T21:07:15.330 に答える
0

あなたの Bean はシングルトン Bean であるため、Spring Container が存続している限り存続します。これは基本的に、プログラムが実行されている限り、つまり webapp が実行されている限り、理論的には何年も存続することを意味します。

もちろん、コントローラーと DAO クラスはステートレスでマルチスレッドをサポートするようにコーディングされているため、単一の共有インスタンスで問題が発生することはありません。

于 2015-09-22T20:50:10.393 に答える