为什么Redis默认序列化器处理之后的key会带有乱码?

建议打开代码跟着看

1、直接从yml配置中进入redis配置文件:

2、看下哪些文件用到了RedisProperties

发现只有一个类引用到了

3、进到RedisAutoConfiguration类

发现也是个自动配置的类,并且内部包含一个自动配置的静态内部类RedisConfiguration可以看到这里定义了RedisTemplate的bean,并初始化了RedisTemplate的ConnectionFactory属性

4、进入RedisTemplate

发现RedisTemplate继承了RedisAccessor并实现了两个接口 先搜一下内部有没有静态代码块发现是没有的,那么看看它的父类(Java是强继承的)

5、RedisTemplate父类:RedisAccessor

好,关键来了 RedisAccessor实现了一个接口:InitializingBean接口中只定义了一个方法:afterPropertiesSet(); 这个方法会在所有bean属性赋值之后被BeanFactory调用(注释翻译,具体为什么,后续看完springboot自动配置和bean的生命周期相关源码之后再补充)

6、那么回到RedisTemplate的父类RedisAccessor看看它里面的afterPropertiesSet()方法里做了些什么

定义了一个断言,用来判断RedisConnectionFactory是否被定义了

7、再回到RedisTemplate看看它里面的afterPropertiesSet()方法里做了些什么

public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperations<K, V>, BeanClassLoaderAware {

	private boolean enableTransactionSupport = false;
	private boolean exposeConnection = false;
	private boolean initialized = false;
	private boolean enableDefaultSerializer = true;
	private RedisSerializer<?> defaultSerializer;
	private ClassLoader classLoader;

	/**以下几种序列化器都被定义为null*/
	private RedisSerializer keySerializer = null;
	private RedisSerializer value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值