3.2、接3.1自定义缓存策略以及删除缓存Cacheable 参数1
需积分: 0 191 浏览量
更新于2022-08-08
收藏 44KB DOCX 举报
在Spring框架中,缓存管理是一个重要的特性,它允许我们高效地存储和检索数据,减少对数据库的访问,提高应用程序的性能。`@Cacheable`、`@CacheEvict`和`@CachePut`是Spring Cache注解的核心,用于实现缓存的存取和更新操作。下面将详细解释这些注解的使用及其参数。
1. **@Cacheable**
- `value`: 必填参数,用于指定缓存的名称,对应于配置文件中定义的缓存区域,例如在EHCache中对应于`ehcache.xml`中的`<cache>`标签的`name`属性。
- `key`: 缓存键的生成规则,若为空则默认使用方法参数作为key。支持SpEL表达式,例如`#id`表示方法参数id,`#user.id`或`#user.getId()`表示对象的属性。
- `condition`: 触发缓存的条件,只有当该表达式为真时,方法的结果才会被缓存。同样支持SpEL,例如`#userId.length < 32`表示当userId长度小于32时缓存结果。
例子:
```java
@Cacheable(value="HealerJeanCache", key="#userId + 'findById'")
public SystemUser findById(String userId) {
SystemUser user = (SystemUser) dao.findById(SystemUser.class, userId);
return user ;
}
```
2. **@CacheEvict**
- `value`: 与`@Cacheable`相同,指定缓存的名称。
- `key`: 清除特定缓存项的键,可以使用SpEL表达式。
- `condition`: 清除缓存的条件,只有满足条件时才会执行清除操作。
- `allEntries`: 如果为`true`,表示清除整个缓存区域的所有条目,而不是单个key。
例子:
```java
@CacheEvict(value="andCache", key="#user.userId + 'findById'")
public void modifyUserRole(SystemUser user) {
System.out.println("hello andCache delete"+user.getUserId());
}
```
3. **@CachePut**
这个注解与`@Cacheable`类似,但不同之处在于它总是执行方法并把结果存入缓存,相当于数据库的`UPDATE`操作,即使缓存中已有相同key的值。
实战应用中,我们通常会结合使用这些注解来实现缓存策略。例如,在`PersonServiceImpl`中,我们可以为`findById`方法添加`@Cacheable`注解,然后在更新或删除操作后,使用`@CacheEvict`清除对应的缓存项,确保数据的一致性。
```java
@Service
public class PersonServiceImpl implements PersonService {
@Resource
private PersonRepository personRepository;
@Cacheable(value="HealerJeanCache", key="#id + 'findById'")
@Override
public Person findById(long id) {
System.err.println("PersonServiceImpl.findById()=========从数据库中进行获取的....id="+id);
return personRepository.findOne(id);
}
// 其他方法,包括添加、更新和删除操作,配合@CacheEvict使用
}
```
通过这样的方式,我们可以构建一套完整的缓存策略,使得应用程序能够在不牺牲数据一致性的情况下,显著提升数据访问的效率。在实际开发中,还需要根据具体业务需求调整和优化缓存策略,比如设置缓存过期时间、使用缓存穿透和缓存击穿的解决方案等。
Orca是只鲸
- 粉丝: 36
- 资源: 317
最新资源
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk
- 操作系统实验ucore lab3
- DG储能选址定容模型matlab 程序采用改进粒子群算法,考虑时序性得到分布式和储能的选址定容模型,程序运行可靠 这段程序是一个改进的粒子群算法,主要用于解决电力系统中的优化问题 下面我将对程序进行详
- final_work_job1(1).sql
- 区块链与联邦学习结合:FedChain项目详细复现指南
- 西门子S7 和 S7 Plus 协议开发示例
- 模块化多电平变流器 MMC 的VSG控制 同步发电机控制 MATLAB–Simulink仿真模型 5电平三相MMC,采用VSG控制 受端接可编辑三相交流源,直流侧接无穷大电源提供调频能量 设置频率
- 基于小程序的智慧校园管理系统源代码(java+小程序+mysql+LW).zip