springboot缓存注解——@Cacheable和@CacheConfig

本文深入探讨了Spring框架中@Caching、@Cacheable及@CachePut注解的使用技巧,详细解析了如何通过这些注解实现数据缓存,提高应用性能。特别关注了根据lastName查询员工信息并缓存结果,以及如何使该结果可用于后续通过id或email查询的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Caching :制定多个缓存规则

@Cacheable 和 @CachePut 同时标注时 ,@CachePut导致还是会走方法跟数据库交互

//根据lastName查,并将结果缓存,并且可以用于下次通过id或者email查询
(因为有Cacheput注解,所有根据lastName查的方法还是会执行)

@Caching(
            cacheable = {@Cacheable(/*value = "emp",*/key = "#lastName")},
            put = {@CachePut(/*value = "emp",*/key = "#result.id"),@CachePut(/*value = "emp",*/key = "#result.email")}
    )
    public Employee getEmpByLastName(String lastName){
        System.out.println("根据...."+lastName+"查询员工");
        return  employeeMapper.getEmpByLastName(lastName);
    }


另外:
@CacheConfig    :抽取缓存公共配置,可以标注在类上

如:

@CacheConfig(cacheNames = "emp")
@Service
public class EmployeeService 

 

转载于:https://www.cnblogs.com/MagicAsa/p/10763275.html

@CacheConfig @Cacheable 都是 Spring 框架中用于缓存注解,它们之间的关系是:@Cacheable 注解可以继承 @CacheConfig 注解中的缓存配置信息。 具体来说,@CacheConfig 注解可以应用在类上,用于指定默认的缓存配置信息,包括缓存的名称、缓存的键前缀、缓存的过期时间等。而 @Cacheable 注解可以应用在方法上,用于指定方法的缓存配置信息,包括缓存的名称、缓存的键、缓存的条件等。如果 @Cacheable 注解没有指定缓存的名称、缓存的键等配置信息,则会默认继承 @CacheConfig 注解中的缓存配置信息。 举个例子,假设有一个类 UserCache,其中定义了一个缓存 userCache,用于缓存用户信息。可以通过 @CacheConfig 注解指定 userCache 缓存的默认配置信息,例如: ```java @CacheConfig(cacheNames = "userCache", keyPrefix = "user_", sync = true) public class UserCache { // ... } ``` 上述代码中,@CacheConfig 注解指定了 userCache 缓存的名称为 userCache,键前缀为 user_,并且使用异步模式缓存数据。 然后,在 UserCache 类的方法中,可以使用 @Cacheable 注解指定方法的缓存配置信息,例如: ```java @Cacheable(key = "#id", condition = "#id>0") public User getUserById(int id) { // ... } ``` 上述代码中,@Cacheable 注解指定缓存的键为方法参数 id,缓存的条件为 id > 0。由于 @CacheConfig 注解指定了缓存的默认配置信息,因此 @Cacheable 注解会默认继承这些配置信息,包括缓存的名称、缓存的键前缀、缓存的过期时间等。 综上所述,@CacheConfig 注解用于指定类级别的缓存配置信息,@Cacheable 注解用于指定方法级别的缓存配置信息,并且 @Cacheable 注解可以继承 @CacheConfig 注解中的缓存配置信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值