zoukankan      html  css  js  c++  java
  • springboot缓存之@Cacheable中常用参数

    接上一节。

        @Cacheable(value = "emp",keyGenerator = "myKeyGenerator",condition="#id>1",unless="#a0==2")
        @ResponseBody
        @RequestMapping("/emp/{id}")
        public Employee getEmp(@PathVariable("id") Integer id){
            Employee emp = employeeService.getEmp(id);
            return emp;
        }

    我们可以通过key参数来指定缓存的key,同时也可以按照自己制定的缓存key,使用keyGenerator即可。

    新建一个config包,在该包中新建MyCacheConfig.java

    package com.gong.springbootcache.config;
    
    import org.springframework.cache.interceptor.KeyGenerator;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.lang.reflect.Method;
    import java.util.Arrays;
    
    @Configuration
    public class MyCacheConfig {
    
        @Bean("myKeyGenerator")
        public KeyGenerator keyGenerator(){
            return new KeyGenerator(){
                @Override
                public Object generate(Object o, Method method, Object... objects) {
                    return method.getClass().getName()+"["+ Arrays.asList(objects).toString()+"]";
                }
            };
        }
    }

    这样我们指定的缓存的key就是:getEmp[id]。

    参数:condition="#id>1",意思是id值大于1的才进行缓存

    参数:unless="#a0==2",意思是第一个参数的值,也就是id,等于2的时候不进行缓存。

  • 相关阅读:
    Eclipse中配置Tomcat碰到Server Tomcat v6.0 Server at localhost failed to start问题
    解决java中对URL编码的问题
    上白泽慧音
    小K的农场
    [USACO15JAN]草鉴定Grass Cownoisseur
    [HNOI2012]矿场搭建/Mining Your Own Business
    [POI2008]BLO-Blockade
    「JOISC 2018 Day 1」帐篷
    Sudoku
    序列
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12290780.html
Copyright © 2011-2022 走看看