做美工用的网站,市场营销案例100例,网站建设需要购买服务器么,平台式网站模板下载在第三篇有关Spring#xff08;长时间#xff09;的缓存管理器的文章中#xff0c;我想通过展示如何配置多个动态创建缓存的缓存管理器来扩展前 两个 。 Spring具有CompositeCacheManager #xff0c;从理论上讲#xff0c;它应该允许使用多个缓存管理器。 它通过询问基础… 在第三篇有关Spring长时间的缓存管理器的文章中我想通过展示如何配置多个动态创建缓存的缓存管理器来扩展前 两个 。 Spring具有CompositeCacheManager 从理论上讲它应该允许使用多个缓存管理器。 它通过询问基础缓存管理器是否具有请求名称的缓存来工作。 问题是当您需要基于某些全局配置动态创建的缓存时。 这是常见的情况当您不想手动定义缓存而只想添加Cacheable并让spring和底层的缓存管理器为您创建一些合理的默认值的缓存时。 很棒直到您需要多个缓存管理器为止。 例如一个用于本地缓存一个用于分布式缓存 。 在许多情况下需要分布式缓存。 但是并不是所有的方法调用都需要分发-有些可以在处理它的实例本地进行并且您不想用可以保留在本地的内容来负担分布式缓存。 是否可以将分布式缓存提供程序配置为将某些缓存指定为本地缓存即使它是由分布式缓存提供程序处理的也许可以但是我不保证它不会很琐碎。 因此面对这个问题我不得不设计一种简单的机制将某些缓存指定为“分布式”将某些缓存指定为“本地”。 单独使用CompositeCacheManager并不能做到这一点因此我扩展了分布式缓存管理器在这种情况下为Hazelcast但可以通过任何提供程序完成 /** * Hazelcast cache manager that handles only cache names with a specified prefix for distributed caches */ public class OptionalHazelcastCacheManager extends HazelcastCacheManager { private static final String DISTRIBUTED_CACHE_PREFIX d: ; public OptionalHazelcastCacheManager(HazelcastInstance hazelcast) { super (hazelcast); } Override public Cache getCache(String name) { if (name null || !name.startsWith(DISTRIBUTED_CACHE_PREFIX)) { return null ; } return super .getCache(name); } } 以及相应的复合缓存管理器配置 bean id cacheManager class org.springframework.cache.support.CompositeCacheManager property name cacheManagers list bean id hazelcastCacheManager class com.yourcompany.util.cache.OptionalHazelcastCacheManager hazelcast constructor-arg ref hazelcast / / bean bean id caffeineCacheManager class com.yourcompany.util.cache.FlexibleCaffeineCacheManager property name cacheSpecification value expireAfterWrite10m / property name cacheSpecs map entry key statistics value expireAfterWrite1h / / map / property / bean / list / property / bean 这基本上意味着任何名称以d:对于“ distributed”开头的缓存都应由分布式缓存管理器处理。 否则请转到下一个缓存管理器在这种情况下为咖啡因。 因此当您想定义一个具有可缓存结果的方法时必须确定它是Cacheable(d:cachename)还是Cacheable(cachename) 这可能是解决该问题的多种方法之一但我喜欢它的简单性。 缓存是很难的 分布式缓存更是如此虽然我们很幸运能够拥有Spring抽象的大部分内容但有时我们还是必须自己处理特殊情况。 翻译自: https://www.javacodegeeks.com/2020/06/using-multiple-dynamic-caches-with-spring.html