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) {}




