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的時候不進行緩存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM