0

Spring 3.1 を使用して実行時に初期化される静的ハッシュマップを共有する必要があります。

すべての静的ハッシュマップを保持する実際のシングルトン Bean (必ずしもシングルトン スコープである必要はありません) を作成する必要があります。

ハッシュマップは実行時にも変更可能であり、すべての Spring Bean で使用できる必要があります。

  1. 静的マップを保持する Bean は、アプリケーションが実行されている限り、生きている必要があります
  2. Bean は、すべての春の Bean からアクセスする必要があります。
  3. ハッシュマップは並行でスレッドセーフである必要があります。ハッシュマップには 100 個のエントリが含まれている可能性があり、非常に高いレートでアクセスされます。

どうすればこれを達成できますか?前もって感謝します、

4

2 に答える 2

1

@Kevin のコメント ( ConcurrentHashMapbeans) に同意しますが、素晴らしい Spring 3.1 の追加が見つかりました: ConcurrentMapCacheFactoryBean. ドキュメントには次のように記載されています。

Spring コンテナー内で使用される場合にConcurrentMapCacheを簡単に構成するためのFactoryBean

注釈付きの Bean の使用を提案するこのブログ投稿も見つけました。@Cacheable

<bean id="cacheManager"
        class="org.springframework.cache.support.SimpleCacheManager">
    <property name="caches">
        <set>
            <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
                  p:name="default"/>
        </set>
    </property>
</bean>

試したことはありませんが、Spring のものとうまく統合されているようです。

于 2012-07-19T15:41:56.293 に答える
0

私はあなたの必要性を100%認識していませんが、セクション3.5.5カスタムスコープで独自のスコープを作成できます。これにより、純粋なシングルトンインスタンスが保証され、すべてのBeanに注入可能になります。適切な同期メソッドまたはマップを使用することで、スレッドセーフを解決できる場合があります

于 2012-07-19T15:33:06.247 に答える