zoukankan      html  css  js  c++  java
  • 【SpringBoot】springboot -- 2.0版本自定义ReidsCacheManager的改变

    1. 问题发现

    在1.0版本中,我们配置redis的cacheManager是这种方式:

        //缓存管理器
        @Bean
        public CacheManager cacheManager(@SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
            RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
            //设置缓存过期时间
            cacheManager.setDefaultExpiration(10000);
            return cacheManager;
        }    //缓存管理器
    

    然而在2.0版本中,这个代码直接报错,原因是RedisCacheManager取消了1.0版本中的public RedisCacheManager(RedisOperations redisOperations)的这个构造方法,所以我们无法再用RedisTemplate作为参数来自定义CacheManager

    下面看一看两个版本的差别:

    1.0 版本的CacheManager构造器
     
     
    2.0 版本的CacheManager构造器
     
     

    RedisCacheWriter提供了对Redis的set、setnx、get等命令的访问权限,可以由多个缓存实现共享,并负责写/读来自Redis的二进制数据。

    RedisCacheConfiguration根据名字都能想到它是提供redis的配置。

    2. springboot2.0 中 CacheManager自定义配置

        /**
         * 缓存管理器
         */
        @Bean
        public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
            //初始化一个RedisCacheWriter
            RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
            //设置CacheManager的值序列化方式为json序列化
            RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();
            RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair
                                                        .fromSerializer(jsonSerializer);
            RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig()
                                                        .serializeValuesWith(pair);
            //设置默认超过期时间是30秒
            defaultCacheConfig.entryTtl(Duration.ofSeconds(30));
            //初始化RedisCacheManager
            return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
        }
    

    上面的代码中,还设置了CacheManager的值序列化方式,所以有了这个配置,可以直接在注解的形式中实现json的redis存储而不用再去多写配置。



    作者:FantJ
    链接:https://www.jianshu.com/p/20366ecf12ce
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    SAP接口编程 之 JCo3.0系列(03) : Table参数
    SAP接口编程 之 JCo3.0系列(01):JCoDestination
    SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming
    ORACLE SQL 分组
    Win10无法安装提示磁盘布局不受UEFI固件支持怎样解决
    win10系统更新补丁时进度条一直卡在0%不动的解决方案
    SAP 批量查看凭证更改记录
    Oracle 中取当前日期的上个月最后天和第一天
    table 谷歌下不出现滚动条
    style.display table-row与block
  • 原文地址:https://www.cnblogs.com/kingdelee/p/10770171.html
Copyright © 2011-2022 走看看