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"/>
Run Code Online (Sandbox Code Playgroud)
命名约定要求EhCacheManagerFactoryBean生成缓存管理器,更确切地说,它是一个net.sf.ehcache.CacheManager实例.然而,豆ehcache不被称为ehcachemanager.cacheManager但是,实际引用了这个bean.
在散文中你可以说一个是Ehcache缓存管理器,而另一个是Spring缓存管理器(由前者支持).
如果您使用以下情况会变得更糟EhCacheFactoryBean:
<bean
id="myCache"
class="org.springframework.cache.ehcache.EhCacheFactoryBean">
<property name="cacheManager">
<ref local="ehcache" />
</property>
Run Code Online (Sandbox Code Playgroud)
有一个叫做cacheManager引用bean 的属性ehcache.
我误解了什么,或者它真的令人困惑吗?设计中的设计不好或命名错误?
Spring框架最近引入了具有中央界面的缓存抽象org.springframework.cache.CacheManager.该接口几乎没有内置实现,包括:
ConcurrentMapCacheManagerEhCacheCacheManagerNoOpCacheManagerSimpleCacheManager此设计允许您在不触及应用程序代码的情况下切换缓存库.正如您所看到的,其中一个内置实现由EhCache支持.但是请注意,EhCacheCacheManager它只是Spring缓存抽象和EhCache库之间的桥梁.因此它需要存在net.sf.ehcache.CacheManager.您可以自己创建此缓存管理器的实例,也可以利用现有的工厂bean,即EhCacheManagerFactoryBean.
我理解它因为名称重叠而令人困惑,但从上面应该清楚哪些类来自哪个库以及为什么使用它们.
| 归档时间: |
|
| 查看次数: |
7146 次 |
| 最近记录: |