我有一個帶有 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
提交
取消