2013-01-07 26 views
7

Następująca próbka z Spring manual dezorientuje mnie ze mnie.Spring cache vs. cachemanger

<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"/> 

Konwencja nazewnictwa mandaty że EhCacheManagerFactoryBean produkuje cache menedżera, a dokładniej jest to instancja net.sf.ehcache.CacheManager. Jednak fasola nazywa się ehcache, a nie ehcachemanager. Rzeczywisty numer cacheManager odwołuje się do tego komponentu bean.

W prozie można powiedzieć, że jest to menedżer pamięci podręcznej Ehcache, a drugi to menedżer pamięci podręcznej Spring (który jest wspierany przez ten pierwszy).

Jest coraz gorzej jeśli używasz EhCacheFactoryBean:

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

Nie ma właściwość o nazwie cacheManager który odwołuje fasoli nazywa ehcache.

Czy źle zrozumiałem cokolwiek lub czy to naprawdę jest mylące? Zły projekt lub złe nazewnictwo w tym przykładzie?

Odpowiedz

5

Wiosenne ramy niedawno wprowadzone caching abstraction z centralnym interfejsem org.springframework.cache.CacheManager. Interfejs ten posiada kilka wbudowanych implementacje, w tym:

Taka konstrukcja pozwala na przełączanie buforowanie biblioteki bez dotykania kodu aplikacji. Jak widać, jedna z tych wbudowanych implementacji jest wspierana przez EhCache. Zauważ jednak, że EhCacheCacheManager to tylko pomost między abstrakcją buforowania sprężyn i biblioteką EhCache. Dlatego potrzebuje istniejącego net.sf.ehcache.CacheManager. Możesz utworzyć instancję tego menedżera pamięci podręcznej samodzielnie lub skorzystać z istniejącego komponentu bean fabrycznej, a mianowicie EhCacheManagerFactoryBean.

Rozumiem, że jest to mylące z uwagi na nakładające się nazwy, ale z powyższego wynika jasno, z jakich klas pochodzą biblioteki i dlaczego są używane.

+1

Potwierdza to moje zrozumienie. Czy nie uważasz, że "ehcacheManager" byłoby bardziej odpowiednią nazwą dla tej fasoli? –

+1

@ MarcelStör: możesz mieć rację. Zapraszam do otwarcia [pull-request] (https://github.com/SpringSource/spring-framework) z poprawioną dokumentacją. –