美文网首页
SpringCache在DAO层使用@Cacheable不生效、

SpringCache在DAO层使用@Cacheable不生效、

作者: 王月亮17 | 来源:发表于2022-08-31 11:42 被阅读0次

@Cacheable在DAO层不生效:

因为想先简单写个测试类试一下缓存是否配置正确是否可用,直接在Controller层调用DAO层,DAO层代码如下:

@Cacheable(value = "USER_INFO", key = "#p0", unless = "null == #result")
UserInfo selectByPhone(String phone);

怎么修改配置都没用,在Controller层加@Cacheable注解有用,判断出了不是配置的问题。
最后加了Service层,好了。
本来想偷个懒结果反而浪费了更多时间。
总结一句就是不能直接在Controller层调用DAO层,否则@Cacheable注解无法生效。

默认两个冒号:

看了下源码长这样:

static CacheKeyPrefix simple(){
    return (name) ->{
        return name + "::";
    }
}

这个只要在原来的RedisCacheConfiguration配置加一句就可以了,如下:

RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()        
                .entryTtl(Duration.ofHour(1)                
                // 这句,设置为单引号
                .computePrefixWith(name - > name + ":")                
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) 

另附keyGenerator写法

@Configuration
public class RedisKeyGenerator {
    @Bean("myKeyGenerator")
    public KeyGenerator myKeyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                return params[0];
            }
        };
    }
}

相关文章

  • SpringCache在DAO层使用@Cacheable不生效、

    @Cacheable在DAO层不生效: 因为想先简单写个测试类试一下缓存是否配置正确是否可用,直接在Control...

  • [java]40、MyBatis-dao

    1、使用MyBatis实现dao层 1.1、使用MyBatis实现dao层的几种方式 1、自定义dao实现类,在实...

  • An_DBLoginDemo

    登录注册需要使用DB-SQLITDBHelper Dao层UserDao接口 Dao层ImpUserDao实现类 ...

  • 带条件的分页排序查询

    一、使用原生sql语句1、service层 2、dao层 二、使用jpa1、dao层 2、T实体类 三、没有数据的...

  • JDBC DAO

    使用 DAO模式 来对数据库做增删改查操作 DAO模式可以大概分为三个层:1.DAO层 2.服务层 3.表现层...

  • mybatis mapper动态代理原理

    一:不使用动态代理的情况 首先看下如果不基于动态代理的mapper(dao)层接口是怎样的, dao接口定义:...

  • J2EE进阶学习——Spring框架(七):连接池配置和使用

    1.使用配置来实现 c3p0的配置: dao层的使用: 1.然后创建service层和dao层对象2.servic...

  • springcache

    在springcache之前 在没有使springcache之前我们使用缓存的方式是这样的: 这段代码我刚开始看的...

  • 缓存解决方案-简单记录

    1、springcache:SpringBoot基础系列-SpringCache使用 - 简书 2、缓存击穿和缓存...

  • DAO设计模式

    DAO(Data Access Objects)设计模式属于JavaEE数据层的操作。 使用DAO设计模式可以简化...

网友评论

      本文标题:SpringCache在DAO层使用@Cacheable不生效、

      本文链接:https://www.haomeiwen.com/subject/kmkvbrtx.html