暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

springboot 缓存cache

五柳人生 2021-11-08
277

1、增加pom

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>


2、开启缓存注解

@SpringBootApplication

@EnableCaching

public class App ...伪代码


3、缓存注解

3-1 @Cacheable

1)当标记在一个类上时则表示该类所有的方法都是支持缓存的

2)当标记在一个方法上时表示该方法是支持缓存的

  标注方法,Spring每次执行前都会检查

  Cache中是否存下相同的key,

  如果存在不执行此方法。否则执行此方法

  并将结果存入指定的缓存


  key属性,缓存中的key

  // key 是指传入时的参数

 @Cacheable(value="user", key="#id")
public Integer find(Integer id) {
return id;
}

 // 表示第一个参数

 @Cacheable(value="user", key="#p0")
public Long find(Long id) {
return id;
}

 // 表示User中的id值

 @Cacheable(value="user", key="#user.id")
public User find(User user) {
return user;
}

 // 表示第一个参数里的id属性值

 @Cacheable(value="user", key="#p0.id")
public User find(User user) {
return user;
}

 condition属性指定发生的条件(#user.age==9)成立时缓存

 @Cacheable(value="user", key="#user.id", 

             condition="#user.age==9")

 @Cacheable(cacheNames = {"user"})


3-2 @CachePut标注的方法在执行前不会检查缓存中是否存在执行结果,

而是每次都执行该方法,并且结果已键值对的形式存储在缓存

@CachePut(key="#result.id")

3-3 @CacheEvict缓存清除

1) key:指定要清除的数据

2) allEntries = true : 指定清除这个缓存中的所有数据

3) beforeInvocation=fales: 缓存的清除是否在方法之前执行

    默认代表缓存清除操作是在方法执行之后执行;

    如果出现异常缓存就不会清除

    beforeInvocation=true  代表清除缓存操作是在方法运行之前执行,

    无论方法是否出现异常,缓存都清除


@CacheEvict(beforeInvocation = true)#代表清除缓存操作是在方法运行之前执行,无论方法是否出现异常,缓存都清除

@CacheEvict(value="user",key="#id")
public void deleteUserById(String id) {}



文章转载自五柳人生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论