Spring Boot:重写 CacheManager bean 使缓存相关属性不起作用

Sas*_*ota 5 java spring redis spring-boot spring-cache

我有一个带有 Redis 缓存的 Spring Boot 2 应用程序。它工作得很好,直到我覆盖了CacheManagerbean。

问题:以下配置属性被忽略(我无法再关闭缓存):

spring.cache.type=none
Run Code Online (Sandbox Code Playgroud)

尽管根据文档它应该可以工作。

问:作品如何制作spring.cache.type=none

有一个像这样的解决方法,但它远不是一个好的解决方案。

更多详细信息:这是我的配置:

@Configuration
public 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
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

Sim*_*lli 6

因为您自己创建 CacheManager,所以您还必须检查spring.cache.type是否要关闭它。

@Bean
@ConditionalOnExpression("${spring.cache.type} != 'none'")
CacheManager cacheManager(RedisCacheWriter redisCacheWriter) {
Run Code Online (Sandbox Code Playgroud)