使用 spring 缓存:
导入 POM 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>${spring_boot_version}</version>
</dependency>
1.为项目开启缓存。
在启动类 Application.java 或者配置类 CacheConfig 中添加 @Enablecaching
2.加入查询缓存。
方法上添加 @Cacheable,把方法返回值放到指定的 spring 缓存中。当下次返回时,如果能够从缓存中找到值,那么该方法则不再被执行。
举例1:
举例2:
那么值是被放到指定的那个缓存区域呢?
加入和查询都是按照 value 和 key 来划分的。spring 会按 value 来分区,然后每个区又分为多个key值,而我们 return 的值就会作为 key 的映射。
如果在缓存中查找到有值了,还会不会执行方法体呢?
如果该指定缓存已经有值了,那么方法体不再执行,而是直接使用缓存中的值。
3.修改和删除操作需要删除缓存
方法上添加 @CacheEvict
// @CacheEvict:缓存清除
// key:指定要清除的数据
// allEntries = true : 指定清除这个缓存中的所有数据
// beforeInvocation=fales: 缓存的清除是否在方法之前执行
// 默认代表缓存清除操作是在方法执行之后执行;如果出现异常缓存就不会清除
// beforeInvocation=true 代表清除缓存操作是在方法运行之前执行,无论方法是否出现异常,缓存都清除
@CacheEvict(value = "PROPERTY_CACHE_BY_ID")
public void deleteEmp(Integer id){
System.out.println("delteEmp: " + id);
int i = 101/0;
emploeeMapper.deleteEmpById(id);
}