我们需要根据是否配置了redis主机来启用/禁用缓存。我添加了以下3个bean配置。这是禁用的正确方式吗?启动后我仍然看到缓存解析器错误--“没有指定CacheResolver,也找不到CacheManager类型的bean。注册一个CacheManager bean或者从你的配置中删除@EnableCaching注解”
@Bean(destroyMethod="shutdown")
@ConditionalOnProperty(prefix = "spring", name = "redis.host")
public RedissonClient redisson() {
Config config = new Config();
config.useSingleServer()
.setAddress("redis://127.0.0.1:6379");
return Redisson.create(config);
}
@ConditionalOnBean(RedissonClient.class)
@Bean
public RedissonSpringCacheManager cacheManager(RedissonClient redissonClient) {
Map<String, CacheConfig> config = new HashMap<>();
// create "testMap" spring cache with ttl = 24 minutes and maxIdleTime = 12 minutes
config.put("testMap", new CacheConfig(60*60*1000, 12*60*1000));
return new RedissonSpringCacheManager(redissonClient, config);
}
@Bean
@ConditionalOnBean(RedissonSpringCacheManager.class)
@Primary
public CompositeCacheManager compositeCacheManager(RedissonSpringCacheManager cacheManager) {
logger.info("composite cache-manager init...");
CompositeCacheManager compositeCacheManager = new CompositeCacheManager(cacheManager);
compositeCacheManager.setFallbackToNoOpCache(true);
return compositeCacheManager;
}谢谢你的帮忙!
发布于 2020-07-17 12:38:42
您已经使用@EnableCaching注释启用了缓存,该注释将始终查找相关的Cache Manager Beans。工作区正在删除@EnableCaching并实现您自己的CachingConfigurer,并将此bean标记为条件或基于配置文件。
https://stackoverflow.com/questions/60639900
复制相似问题