一、该问题的重现步骤是什么?
1. 新建了一个工程,然后导入了cache和redis的依赖包
2. 启动时候提示redisCacheManager有两个实例化配置类
3.当我为了以上问题使用spring.main.allow-bean-definition-overriding: true来解决时候,发现CacheUtil无法使用了,报错如下:
二、你期待的结果是什么?实际看到的又是什么?
调试发现实际我们的cachemanager注入进来的不是RedisAutoCacheManager实例,而是JwtRedisConfiguration配置得到的redisCacheManager,这样就跟我们引入的blade-starter-redis里面的相冲突了,不是按照预期配置的序列化方式来操作redis缓存了。
现在不确定现在现在的加载逻辑,因为@AutoConfigureBefore({RedisAutoConfiguration.class}),RedisAutoConfiguration之前就先去加载了这个类JwtRedisConfiguration,那么我们的BladeRedisCacheAutoConfiguration加载时候岂不是永远都加载不到RedisAutoCacheManager,但是在我们的Blade项目里面确实正常的,首先就进入了BladeRedisCacheAutoConfiguration类去实例化正确的redisCacheManager。
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
Blade商业版 2.7.0 Windows
JwtRedisConfiguration有@Order注解的,也就是说他会最后加载,而BladeRedisCacheAutoConfiguration没有这个注解,不会最后加载。
他俩都有@AutoConfigureAfter(RedisAutoConfiguration.class),主要就是看@Order注解了。
如果两个依赖都引入,那最先实例化的应该是BladeRedisCacheAutoConfiguration才对。
如果你找不出问题,把你的新工程精简一下,只留关键配置,然后打包上传到本帖,我下载调试看看是哪里的问题
主要是看到两者注解不一样呢,一个是before一个是after
BladeRedisCacheAutoConfiguration使用的是@AutoConfigureAfter(RedisAutoConfiguration.class)
JwtRedisConfiguration使用的是@AutoConfigureBefore(RedisAutoConfiguration.class)我再去简化精简下看看效果
麻烦老铁看下第二个回复呢