1.几个注解
注 解 | 描 述 |
---|---|
@Cacheable | 表明在进入方法之前,Spring 会先去缓存服务器中査找对应 key 的缓存值,如果找到缓存值,那么 Spring 将不会再调用方法,而是将缓存值读出,返回给调用者;如果没有找到缓存值,那么 Spring 就会执行你的方法,将最后的结果通过 key 保存到缓存服务器中 |
@CachePut | Spring 会将该方法返回的值缓存到缓存服务器中,这里需要注意的是,Spring 不会事先去缓存服务器中查找,而是直接执行方法,然后缓存。换句话说,该方法始终会被 Spring 所调用 |
@CacheEvict | 移除缓存对应的 key 的值 |
@Caching | 这是个分组注解,它能够同时应用于其他缓存的注解 |
注解 @Cacheable 和 @CachePut 都可以保存缓存键值对,只是它们的方式略有不同,请注意二者的区别,它们只能运用于有返回值的方法中,而删除缓存 key 的 @CacheEvict 则可以用在 void 的方法上,因为它并不需要去保存任何值。
上述注解都能标注到类或者方法之上,如果放到类上,则对所有的方法都有效;如果放到方法上,则只是对方法有效。在大部分情况下,会放置到方法上。因为 @Cacheable 和 @CachePut 可以配置的属性接近,所以把它们归为一类去介绍,而 @Caching 因为不常用,就不介绍了。
一般而言,对于查询,我们会考虑使用 @Cacheable;对于插入和修改,我们会考虑使用 @CachePut;对于删除操作,我们会考虑使用 @CacheEvict。
@Cacheable
注解只有三个属性。
- value : 必须要的。就是个自己取的名字,通过它指明了第一次调用这个方法时返回将被存在内存的哪里。
- key : 可选。要使用SpEL表达式
- condition:condition就添加了一个限定条件。