亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Boot:覆蓋 CacheManager bean 使緩存相關屬性不起作用

Spring Boot:覆蓋 CacheManager bean 使緩存相關屬性不起作用

繁花如伊 2023-02-16 17:17:11
我有一個帶有 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) {


查看完整回答
反對 回復 2023-02-16
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

內置的 Spring Redis 緩存配置位于org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration

@Conditional(CacheCondition.class)它上面有一個。這CacheCondition將檢查屬性的值spring.cache.type。如果它設置為“NONE”整個配置,包括RedisCacheManagerbean 根本不會加載。

現在,當您創建自己的配置時,您可以cacheManager自己定義它,無論spring.cache.type變量的值如何,它都會被加載

所以你應該放一些條件值(這將讀取spring.cache.type值或你的自定義條件)


查看完整回答
反對 回復 2023-02-16
  • 2 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號