接上一节.
- @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 的时候不进行缓存.
来源: http://www.bubuko.com/infodetail-3414608.html