SpringCache KeyGenerator 重复生成,且带有$$EnhancerBySpringCGLIB$$字样
尝试使用SpringCache + redis 实现注解缓存时,遇到如题问题,核心代码如下
@Configuration 配置下的KeyGenerator
@Bean
public KeyGenerator customKeyGenerator() {
return (o, method, objects) -> {
StringBuilder sb = new StringBuilder();
sb.append(o.getClass().getName()); //获取访问路径全名
log.info("访问路径名:" + o.getClass().getName());
sb.append(":").append(method.getName());//获取访问方法名
log.info("访问方法名:" + method.getName());
for (Object object : objects) {
if (ObjectUtils.isNotEmpty(object)) {
sb.append(":").append(object.toString());
}
}
return sb.toString();
};
}
@Configuration 配置下的 cacheManager
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(6))//过期时间 使用Duration,可设置类型
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer()))//value 序列化 或 GenericJackson2JsonRedisSerializer .disableCachingNullValues();//不允许存储空值
return RedisCacheManager.builder(connectionFactory)
.cacheDefaults(config)
.transactionAware()
.build();
}
用法如下
日志打印如下
对,你没有看错,我发一次请求,执行了四次,原因尚未明确,请问是否有遇到过该问题的人,希望能解答下
注:包版本如下
org.springframework.boot:spring-boot-starter-cache:2.3.5.RELEASE
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
参考一篇文章
https://blog.csdn.net/qq_4226...
properties中设置
spring.aop.proxy-target-class=false
解决了获取类名带有SpringBooCGLIB$$的问题
至于另外一个keyGenerator为何执行两次,暂未知晓。
2021年4月10日22点25分