9

Spring マニュアルの次のサンプルは、私を混乱させます。

<bean id="cacheManager" 
      class="org.springframework.cache.ehcache.EhCacheCacheManager"
      p:cache-manager-ref="ehcache"/>

<!-- Ehcache library setup -->
<bean id="ehcache" 
      class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" 
      p:config-location="ehcache.xml"/>

EhCacheManagerFactoryBean命名規則では、キャッシュマネージャーを生成することが義務付けられています。より正確には、それはnet.sf.ehcache.CacheManagerインスタンスです。それでも、Bean はehcachenotと呼ばれehcachemanagerます。ただし、実際のcacheManagerはこの Bean を参照します。

散文的に言えば、1 つは Ehcache キャッシュ マネージャーであり、もう 1 つは Spring キャッシュ マネージャー (前者に支えられている) であると言えます。

を使用するとさらに悪化しますEhCacheFactoryBean

<bean
  id="myCache"
  class="org.springframework.cache.ehcache.EhCacheFactoryBean">
  <property name="cacheManager">
    <ref local="ehcache" />
  </property>

cacheManagerという名前の Bean を参照するという名前のプロパティがありますehcache

私は何かを誤解しましたか、それとも本当に混乱していますか? 設計が悪いのか、それとも例の名前が悪いのか?

4

1 に答える 1

8

Spring フレームワークは最近、中央インターフェースを使用したキャッシングの抽象化を導入しました。org.springframework.cache.CacheManagerこのインターフェースには、次のようないくつかの組み込み実装があります。

この設計により、アプリケーション コードに触れることなく、キャッシュ ライブラリを切り替えることができます。ご覧のとおり、これらの組み込み実装の 1 つは EhCache によってサポートされています。EhCacheCacheManagerただし、Spring キャッシングの抽象化と EhCache ライブラリの間の橋渡しに過ぎないことに注意してください。したがって、既存のnet.sf.ehcache.CacheManager. このキャッシュ マネージャのインスタンスを自分で作成するか、既存のファクトリ Bean、つまりEhCacheManagerFactoryBean.

名前が重複しているため紛らわしいことは理解していますが、上記から、どのクラスがどのライブラリから来ており、なぜそれらが使用されているのかが明確になるはずです。

于 2013-01-07T22:35:28.510 に答える