@CacheEvict与@Cacheable 区别是什么 ?
时间: 2023-11-15 15:58:58 浏览: 77
@Cacheable和@CacheEvict都是Spring框架中的缓存注解,但它们的作用不同。@Cacheable用于在方法执行前先检查缓存中是否存在相同key的缓存,如果存在则直接返回缓存中的值,否则执行方法并将返回结果存入缓存中。而@CacheEvict则是用于清除缓存,可以指定清除某个key的缓存或者清除所有缓存。因此,@Cacheable用于读取缓存,@CacheEvict用于清除缓存。
相关问题
15、 (2.5分)在Spring Boot中使用缓存时,以下哪个注解可以用于定义缓存过期时间 A、@CacheEvict B、@Cacheable C、@CachePut D.@CacheConfig
B、@Cacheable。在Spring Boot中使用缓存,可以使用`@Cacheable`注解来标注方法,表示该方法的结果可以被缓存。在默认情况下,缓存的key是由参数值来决定的,而缓存的值则是由方法的返回值来决定的。如果需要定义缓存的过期时间,可以在`@Cacheable`注解中使用`key`和`cacheManager`属性,例如:
```java
@Cacheable(value = "myCache", key = "#id", cacheManager = "cacheManager",
expireAfterWrite = 60, timeUnit = TimeUnit.SECONDS)
public User getUserById(Long id) {
// ...
}
```
这里的`expireAfterWrite`属性表示缓存的过期时间是60秒,`timeUnit`属性表示时间单位是秒。其他选项中,`@CacheEvict`注解用于从缓存中删除数据;`@CachePut`注解用于更新缓存中的数据;`@CacheConfig`注解用于统一配置缓存的默认属性。
@CacheEvict @Cacheable
@CacheEvict和@Cacheable是Spring框架中用于缓存管理的注解。
@Cacheable注解用于标记一个方法的返回值可以被缓存起来,当再次调用该方法时,如果缓存中已经存在该结果,则直接从缓存中获取,而不再执行方法体内的逻辑。该注解可以用于类级别或者方法级别,可以指定缓存的名称、缓存的key以及缓存的条件等。
@CacheEvict注解用于标记一个方法执行后需要清除缓存。当该方法被调用后,会清除指定名称的缓存中的数据。该注解也可以用于类级别或者方法级别,可以指定清除的缓存名称、清除的key以及清除的条件等。
这两个注解可以配合使用,通过@Cacheable注解将方法的返回值缓存起来,然后通过@CacheEvict注解在某个操作执行后清除缓存,以保证缓存的一致性和准确性。
阅读全文