gpt4 book ai didi

Spring 缓存与缓存管理器

转载 作者:行者123 更新时间:2023-12-04 07:55:55 24 4
gpt4 key购买 nike

以下示例来自 Spring manual把我搞糊涂了。

<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 被称为 ehcache不是 ehcachemanager .实际 cacheManager但是,引用了这个 bean。

在散文中,您可以说一个是 Ehcache 缓存管理器,而另一个是 Spring 缓存管理器(由前者支持)。

如果您使用 EhCacheFactoryBean,情况会变得更糟:
<bean
id="myCache"
class="org.springframework.cache.ehcache.EhCacheFactoryBean">
<property name="cacheManager">
<ref local="ehcache" />
</property>

有一个属性叫做 cacheManager它引用了一个名为 ehcache 的 bean .

我是不是误会了什么,还是真的那么令人困惑?示例中的糟糕设计或只是糟糕的命名?

最佳答案

Spring框架最近推出caching abstraction org.springframework.cache.CacheManager 中央接口(interface)。该接口(interface)几乎没有内置实现,包括:

  • ConcurrentMapCacheManager
  • EhCacheCacheManager
  • NoOpCacheManager
  • SimpleCacheManager

  • 这种设计允许您在不接触应用程序代码的情况下切换缓存库。如您所见,这些内置实现之一由 EhCache 支持。但是请注意 EhCacheCacheManager只是 Spring 缓存抽象和 EhCache 库之间的桥梁。因此它需要现有的 net.sf.ehcache.CacheManager .您可以自己创建此缓存管理器的实例,也可以利用现有的工厂 bean,即 EhCacheManagerFactoryBean .

    我知道由于名称重叠而令人困惑,但是从上面应该清楚哪些类来自哪个库以及为什么使用它们。

    关于Spring 缓存与缓存管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14205185/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com