1

基本的に ConcurrentHashMap (キャッシュとして使用される) と、マップ内のエントリを更新および削除するいくつかの関数を保持する「class1」と言う Java クラスがあります。このクラスは、シングルトン クラスとして設計されていません。同僚と話し合っていましたが、インターネットでいくつかの投稿を読んだため、本当に決めることができませんでした.これを行ってもいいですか?

<bean id="reqrespCacheMgr1" class="gravity.applications.RFQService.reqrespgtwy.utility.ReqRespCacheManager" scope="singleton">
    </bean>
<bean id="reqrespCacheMgr2" class="gravity.applications.RFQService.reqrespgtwy.utility.ReqRespCacheManager" scope="singleton">
    </bean>
<bean id="reqrespCacheMgr3" class="gravity.applications.RFQService.reqrespgtwy.utility.ReqRespCacheManager" scope="singleton">
    </bean>

私は基本的に同じクラスの 3 つのシングルトン インスタンスを作成しようとしています.クラス ローダー コンテキストではなく、Spring Bean ファクトリ コンテキストでのシングルトン スコープについて話しているため、シングルトンネスの意味を実際に損なうことはないと思います..私は知っていますこれを行う別の方法があります。同じクラスに 3 つの並行ハッシュ マップがあり、シングルトン Bean 参照を 1 つだけ使用する場合と同様に、同じクラスの 3 つのマップに対して update メソッドと remove メソッドを作成しようとします。

混乱させていないことを願っていますが、知りたいのはどれが良いアプローチかということだけです。デザインパターンを不適切に使用しているのではないかと心配しています..

質問が不明な場合はお知らせください

4

2 に答える 2

0

アプリケーションのライフサイクル全体でこれら 3 つのインスタンスのみを使用する必要がある限り、私には問題ないように見えます。このタイプでは、単一のプロパティの自動配線が機能しないことをご存知ですか? @Qualifier を使用して、特定のインスタンスをアプリケーション Bean に割り当てる必要があります。

public class FooBean {
   @Inject
   @Qualifier("reqrespCacheMgr3")
   ReqRespCacheManager cacheManager;
}

または、タイプの List コンポーネントを注入することで、3 つすべてを 1 つの Bean にまとめることができます。

@Inject
List<ReqRespCacheManager> caches;

それが役立つことを願っています! 頑張ってください。2 歩先を考えることを忘れないでください。

于 2013-05-08T22:08:24.790 に答える