在开发的过程中我们总会遇到对方法返回结果进行缓存的场景,下面介绍一下常用的@Cacheable注解进行缓存的场景。
1、概述
它将方法的返回值存储在缓存中,以便在之后的调用中可以直接使用缓存中的值,而无需再次执行方法。这样可以提高程序的执行效率,减少对数据库的访问次数。
2、基本属性和使用介绍
-
value:这是必需的属性,它指定了缓存的名称。你可以使用它来区分不同的缓存区域。
@Cacheable(value = "users")
public User getUserById(long userId) {
// 查询数据库并返回用户信息
}
-
key属性用于指定缓存的键。默认情况下,如果方法的参数是一个对象,那么Spring会使用该对象的
toString()
方法的结果作为缓存的键。但是,你通常希望更细粒度地控制键的生成。
@Cacheable(value = "users", key = "#userId + '_' + #userName")
public User getUserByIdAndName(long userId, String userName) {
// ...
}
-
condition属性允许你指定一个SpEL表达式,用于确定是否应该缓存方法的结果。如果表达式的计算结果为
false
,那么结果将不会被缓存。
@Cacheable(value = "users", key = "#userId", condition = "#userId > 10")
public User getUserById(long userId) {
// ...
}
3、如何开启缓存
要在Spring应用中启用缓存支持,你需要在配置类上添加@EnableCaching
注解
@Configuration
@EnableCaching
public class AppConfig {
// ...
}