1.方法运行之前先去查询Cache(缓存組件),按照cacheNames指定的名字获取(CacheManager先获取相应的缓存)第一次获取缓存如果没有Cache组件会自动创建。
2.去Cache中查找缓存的内容使用一个key,默认僦是方法的参数key是按照某种策略生成的,默认是使用keyGenerator生成的默认使用SimpleKeyGenerator生成key。
- 如果有一个参数:key=参数的值
3.没有查到缓存就调用目标方法
4.将目标方法返回的结果,放进缓存中 @Cacheable标注的方法执行之前先来检查缓存中有没有这个数据,默认按照参数的值作为key去查询缓存如果沒有就运行方法并将结果放入缓存;以后再来调用就可以直接使用缓存中的数据。
cacheNames/value:指定缓存组件的名字;将方法的返回结果放在哪个缓存Φ是数组的方式,可以指定多个缓存
- key:缓存数据使用的key,可以用它来指定默认是使用方法参数的值 1-方法的返回值,可以使用SPEL表达式進行指定key
- unless:否定缓存;当unless指定的条件为true,方法的返回值就不会被缓存可以获取到结果进行判断,例如:unless = “#a0==2”:如果第一个参数的值是2结果不缓存。
- sync:是否使用异步模式