Spring面试题, Spring 中的 @Cacheable 和 @CacheEvict 注解的作用是什么?
Spring面试题, Spring 中的 @Cacheable 和 @CacheEvict 注解的作用是什么?
QA
Step 1
Q:: Spring 中的 @
Cacheable 注解的作用是什么?
A:: @Cacheable 注解用于标记一个方法,它的返回值将被缓存。当下次调用这个方法且参数相同,Spring 将会直接从缓存中取出数据,而不是执行这个方法。通过使用 @
Cacheable,可以减少方法的执行次数,从而提高系统性能。
Step 2
Q:: Spring 中的 @
CacheEvict 注解的作用是什么?
A:: @
CacheEvict 注解用于标记一个方法,当这个方法被调用时,会清除缓存中的一个或多个条目。它通常用于在数据更新后,确保缓存中存储的过期数据被移除,以保持数据的一致性。
Step 3
Q:: @Cacheable 和 @
CacheEvict 如何一起使用?
A:: 在实际使用中,@Cacheable 和 @CacheEvict 常常结合使用。例如,当一个方法用于读取数据且需要缓存结果时,可以使用 @Cacheable;当另一个方法用于更新数据时,则需要使用 @
CacheEvict 来清除缓存,以确保缓存中的数据是最新的。
Step 4
Q:: 如何自定义缓存的键?
A:: 可以通过在 @Cacheable 或 @CacheEvict 注解中使用 key 属性来自定义缓存的键。默认情况下,Spring 会使用方法参数作为缓存键,但可以通过 SpEL 表达式来指定自定义的键。例如:@Cacheable(value = "items", key = "#id")
。
Step 5
Q:: 如何配置缓存的过期时间?
A:: Spring 自身不支持直接配置缓存的过期时间,但可以通过使用 Spring Cache 抽象与具体的缓存实现(如 EhCache、Caffeine、Redis 等)相结合来实现。例如,使用 EhCache 时,可以在 ehcache.
xml 文件中配置缓存的过期时间。