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