我有一个带有 Redis 缓存的 Spring Boot 2 应用程序。CacheManager在我覆盖bean之前,它工作得很好。问题:以下配置属性被忽略(我无法再关闭缓存):spring.cache.type=none尽管根据文档它应该可以工作。问题:如何制作spring.cache.type=none作品?有这样的解决方法,但这远不是一个好的解决方案。更多详细信息:这是我的配置的样子:@Configurationpublic class CacheConfiguration { @Bean RedisCacheWriter redisCacheWriter(RedisConnectionFactory connectionFactory) { return RedisCacheWriter.lockingRedisCacheWriter(connectionFactory); } @Bean CacheManager cacheManager(RedisCacheWriter redisCacheWriter) { Map<String, RedisCacheConfiguration> ttlConfiguration = ... RedisCacheConfiguration defaultTtlConfiguration = ... return new RedisCacheManager( redisCacheWriter, defaultTtlConfiguration, ttlConfiguration ); }}
2 回答
jeck猫
TA贡献1909条经验 获得超7个赞
因为您是自己创建 CacheManager,所以您还必须检查spring.cache.type是否要关闭它。
@Bean
@ConditionalOnExpression("${spring.cache.type} != 'none'")
CacheManager cacheManager(RedisCacheWriter redisCacheWriter) {
翻阅古今
TA贡献1780条经验 获得超5个赞
内置的 Spring Redis 缓存配置位于org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration
@Conditional(CacheCondition.class)
它上面有一个。这CacheCondition
将检查属性的值spring.cache.type
。如果它设置为“NONE”整个配置,包括RedisCacheManager
bean 根本不会加载。
现在,当您创建自己的配置时,您可以cacheManager
自己定义它,无论spring.cache.type
变量的值如何,它都会被加载
所以你应该放一些条件值(这将读取spring.cache.type
值或你的自定义条件)
添加回答
举报
0/150
提交
取消