作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个配置为使用 2 个缓存管理器 EhCache 和 RedisCache 的 SpringBoot 微服务,并且我正在尝试实现 CacheErrorHandler 来分别处理缓存错误。
根据reference ,似乎我只能定义一个处理所有类型缓存的 CacheErrorHandler 。
我可以知道有没有办法为不同的缓存管理器实现不同的 CacheErrorHandler ?
Redis 缓存管理器 Bean 配置:
@Bean
@Primary
@ConditionalOnBean(CustomCacheProperties.class)
public CacheManager redisCacheManager(RedisConnectionFactory connectionFactory, CustomCacheProperties customCacheProperties) {
return RedisCacheManager.builder(connectionFactory)
.cacheDefaults(RedisCacheConfiguration.defaultCacheConfig())
.withInitialCacheConfigurations(customCacheProperties.getInitialCacheConfigurations())
.build();
}
@Bean(name = "ehcache")
public CacheManager ehcacheManager() {
return new EhCacheCacheManager(ehCacheCacheManager().getObject());
}
最佳答案
这是一个老问题,但是当我用谷歌搜索同样的问题时,它就出现了,所以我想无论如何我都会给出答案。
据我所知,没有办法注册多个错误处理程序,但您可以根据缓存的类型区分错误处理,如下所示:
@Override
public void handleCacheGetError(RuntimeException exception, Cache cache, Object key) {
if (cache instanceof Ehcache) {
// ... handle EhCache failure
} else if (cache instanceof RedisCache) {
// ... handle Redis failure
} else {
// ... fallback
}
}
您需要检查您使用的缓存管理器,了解它们创建的缓存的实际类型。
关于spring - 如何为多个CacheManager创建多个CacheErrorHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52624123/
我是一名优秀的程序员,十分优秀!