在对接一个小程序推送的框架时,需要将 access_token 存储到 Redis 中,框架中提供了存储逻辑,只需要将 RedissonClient 对象传进去即可。 框架内部在用 Redisson 的 RBucket 进行数据存储时报错了,原因是 fst 里面的一个方法找不到了,这一看就是版本的问题。

Redisson 中依赖的 fst 是 2.57,这个版本是没问题,主要是目前项目的依赖版本降低了,原因是 dubbo 中依赖了低版本,影响了原有的版本。

解决方案很简单,强制申请要使用的版本即可,今天主要不是讲这个如何解决的,是想说下另一些使用不太方便的点。

默认编码

根据官方文档的说明,默认编码是 jackson, 从我们上面的错误来看,是用了 fst 编码才报的错。而项目中没有单独设置过编码方式,所以这里文档是不是没及时更新?

在构造 Config 对象里面看到了默认的编码设置:

配置编码

如果你想换一种编码方式,本来想着用了 redisson-spring-boot-starter,应该直接可以通过配置指定对应的编码方式。

翻翻源码一看并没有这些配置信息,看文档得知,你可以自定义一个 yml 文件来配置相关信息,然后指定这个 yml 文件的路径。

spring:
redis:
redisson:
config: classpath:redisson.yml

在 Starter 包中自动装配的逻辑如下,就是根据配置路径加载整个文件的内容,然后转换成 Config 对象。

所以如果我要替换默认的编码方式,就需要自定义一个 redisson.yml 文件进行配置,说实话不方便,最方便的还是直接配置,比如

spring.redis.redisson.codec=org.redisson.codec.JsonJacksonCodec

另一点在于,如果需要自定义文件来进行配置,对于多环境的区分不是很好,需要每个环境对应一个配置文件,然后在配置中心中指定使用哪个自定义的文件。

spring.redis.redisson.config: classpath:redisson-beta.yml
或者
spring.redis.redisson.config: classpath:redisson-product.yml

然后 redisson.yml 这里面的文件内容不能放到配置中心里去,加载不到。如果内容要放进去,需要改动加载配置的代码,就不能通过 classpath 去读取了,需要从配置中心去读取。

如果实在觉得不好用就重写个吧,也挺快的,哈哈!

关于作者:尹吉欢,简单的技术爱好者,《Spring Cloud 微服务-全栈技术与案例解析》, 《Spring Cloud 微服务 入门 实战与进阶》作者, 公众号猿天地发起人。

我整理了一份很全的学习资料,感兴趣的可以微信搜索「猿天地」,回复关键字 「学习资料」获取我整理好了的 Spring Cloud,Spring Cloud Alibaba,Sharding-JDBC 分库分表,任务调度框架 XXL-JOB,MongoDB,爬虫等相关资料。

用了Redisson的Spring Boot Starter搞的我都想重写个的更多相关文章

  1. 最详细的自定义Spring Boot Starter开发教程

    1. 前言 随着Spring的日渐臃肿,为了简化配置.开箱即用.快速集成,Spring Boot 横空出世. 目前已经成为 Java 目前最火热的框架了.平常我们用Spring Boot开发web应用 ...

  2. Spring Boot Starter 开发指南

    Spring Boot Starter是什么? 依赖管理是任何复杂项目的关键部分.以手动的方式来实现依赖管理不太现实,你得花更多时间,同时你在项目的其他重要方面能付出的时间就会变得越少. Spring ...

  3. Spring Boot Starter 介绍

    http://www.baeldung.com/spring-boot-starters 作者:baeldung 译者:http://oopsguy.com 1.概述 依赖管理是任何复杂项目的关键部分 ...

  4. spring -boot s-tarter 详解

    Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合.你可以获取所有Spring及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符.例如,如果你想使用Sprin ...

  5. Spring Boot (一): Spring Boot starter自定义

    前些日子在公司接触了spring boot和spring cloud,有感于其大大简化了spring的配置过程,十分方便使用者快速构建项目,而且拥有丰富的starter供开发者使用.但是由于其自动化配 ...

  6. SpringBoot 之Spring Boot Starter依赖包及作用

    Spring Boot 之Spring Boot Starter依赖包及作用 spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spri ...

  7. Spring boot starter pom的依赖关系说明

    Spring Boot 通过starter依赖为项目的依赖管理提供帮助.starter依赖起始就是特殊的maven依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖. sp ...

  8. Spring Boot Starter列表

    转自:http://blog.sina.com.cn/s/blog_798f713f0102wiy5.html Spring Boot Starter 基本的一共有43种,具体如下: 1)spring ...

  9. 创建自己的Spring Boot Starter

    抽取通用模块作为项目的一个spring boot starter.可参照mybatis的写法. IDEA创建Empty Project并添加如下2个module,一个基本maven模块,另一个引入sp ...

随机推荐

  1. 新手学习C语言/C++编程你所必须要了解的知识!从计算机原理开始!

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  2. Docker安装以及运行第一个HelloWorld

      Docker安装以及运行第一个HelloWorld

  3. kinaba 安装踩坑: FATAL Error: [elasticsearch.url]: definition for this key is missing 转

     安装  https://www.jianshu.com/p/875457cb8da6   操作系统:Linux kibana 版本: 7.4.0 1. 在/etc/yum.repos.d/ 下新建 ...

  4. spring boot:用redis+lua限制短信验证码的发送频率(spring boot 2.3.2)

    一,为什么要限制短信验证码的发送频率? 1,短信验证码每条短信都有成本制约, 肯定不能被刷接口的乱发 而且接口被刷会影响到用户的体验, 影响服务端的正常访问, 所以既使有图形验证码等的保护, 我们仍然 ...

  5. Vue3 来了,Vue3 开源商城项目重构计划正式启动!

    我打算用 Vue3 写一个商城项目,目前已经开始着手开发,测试完成后正式开源到 GitHub,让大家也可以用现成的 Vue3 大型商城项目源码来练练手. Vue 3.0 来了,我们该做些什么? Vue ...

  6. Udacity的C++编程练习: Python转C++

    练习 1 在机器人定位的课程中,Sebastian Thrun 已经带领你了解了一维机器人传感和运动的 Python 代码.最后你得到了一个 sense() 函数,它基于传感器的测量数据来更新概率.你 ...

  7. python打印水仙花数的个人总结

    面试过程中,提到python,面试最多的就是让你现场写代码实现水仙花.冒泡.九九乘法表,这些面试方法旨在校验面试者的python基础和思维逻辑. 先从水仙花说起,水仙花是指一个n位正整数(n>= ...

  8. vue-cli中使用全局less变量

    1.执行 vue add style-resources-loader 命令,选择less 2.在 vue.config.js中添加配置,注意将路径更改为自己存放less变量文件的地址 // 全局使用 ...

  9. django JsonResponse返回中文时显示unicode编码(\u67e5\u8be2)

    django JsonResponse返回中文时显示unicode编码(\u67e5\u8be2) 关注公众号"轻松学编程"了解更多. 原因 这个unicode编码,是python ...

  10. P4683 [IOI2008] Type Printer 打印机

    题意描述 [IOI2008] Type Printer 打印机 几百年前的 IOI 的题目还是很好的呀. 给你一个 诡异的 打印机,它只能用已有的字符来打印,而且必须每一个都用到.(这岂不是活字印刷术 ...