SpringCache KeyGenerator 重复生成,且带有$$EnhancerBySpringCGLIB$$字样

发布于 2022-09-12 23:12:23 字数 1634 浏览 20 评论 0

尝试使用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();
}

用法如下

image.png

日志打印如下

image.png

对,你没有看错,我发一次请求,执行了四次,原因尚未明确,请问是否有遇到过该问题的人,希望能解答下

注:包版本如下
org.springframework.boot:spring-boot-starter-cache:2.3.5.RELEASE

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小梨窩很甜 2022-09-19 23:12:23

参考一篇文章
https://blog.csdn.net/qq_4226...
properties中设置
spring.aop.proxy-target-class=false
解决了获取类名带有SpringBooCGLIB$$的问题

至于另外一个keyGenerator为何执行两次,暂未知晓。
2021年4月10日22点25分

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文