接上一节。
@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的时候不进行缓存。