扩展@Cacheable自定义缓存过期时间

采用这种方式扩展@Cacheable好处是实现是简单,但缺点是语义不直观,因此得做好宣导,不然对于新人来说,他可能都不知道cacheName用#分割是代表啥意思,对于本项目来说直接这么使用较为方便,还有一种方式是可以自定义注解,有兴趣的同学可以自行研究~
摘要由CSDN通过智能技术生成

背景

@Cacheable是一个Spring Framework的注解,通常用于实现方法级别的缓存。在实际项目开发中经常会用到@Cacheable注解来优化接口的查询性能,但是在使用中发现,Spring Cache默认是不支持在@Cacheable上添加过期时间的,只能在全局配置过期时间,但是对于不同的业务缓存过期时间是不同的,所以开始思考如何在继续使用@Cacheable注解的情况下可以对key设置过期时间。

配置及使用

  1. pom.xml添加依赖

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
  2. application.yaml配置缓存类型、过期时间、key的前缀

    spring:
      cache:
        type: redis
        redis:
          # 缓存30分钟
          time-to-live: 1800000
          key-prefix: "CACHE::"
    package com.onecode.tc.platform.config;
    
    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    import com.fasterxml.jackson.annotation.PropertyAccessor;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
    import org.springframework.beans.factory.ObjectProvider;
    import org.springframework.boot.autoconfigure.cache.CacheProperties;
    import org.springframework.cache.annotation.CachingConfigurerSupport;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.cache.RedisCacheConfiguration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
    import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
    import org.springframework.data.redis.serializer.RedisSerializationContext;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    /**
     * redis配置
     *
     * @author youmu
     */
    @Configuration
    public class RedisConfig extends CachingConfigurerSupport {
    
        /**
         * 配置SpringCacheRedis 序列化方式
         *
         * @param cacheProperties cacheProperties
         * @return
         */
        @Bean
        public RedisCacheConfiguration redisCacheConfiguration(ObjectProvider<CacheProperties> cacheProperties) {
            GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
            RedisCacheConfiguration 
  • 48
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linsm1231

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值