接上一節。
@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的時候不進行緩存。