添加Maven依赖
//缓存依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
启动类开启缓存
@SpringBootApplication
@EnableCaching
public class CacheApplication {
public static void main(String[] args) {
SpringApplication.run(CacheApplication.class, args);
}
1.启动类开启缓存功能@EnableCaching
2.@Cacheable 作用在方法上service
将方法的返回结果增加到缓存中
@cacheable(cacheNames="emps",key="#root.methodName + '[' +#id+']'")
Key 是 getEmployee[2] 用spEL表达式语法
@Cacheable(cacheNames="listTreeDataByRoleId",key="#p1")
public List<TreeData>getTreedataByRoleid(String onePname,String roleId){
}
@Cacheable(cacheNames="listTreeDataByRoleId1",key="#p1+#p0")
public List<TreeData>getTreedataByRoleid(String onePname,String roleId){
}
@Cacheput(value="listTreeDataByRoleId",key="#p1")
@CacheEvict(value="listTreeDataByRoleId",key="#p0")
public JsonData addRoleDatas(String roleId,String datas){
}
@CacheEvict(value="listTreeDataByRoleId1",key="#user.userId + 'findById'")
public void modifyUserRole(SystemUser user) {
System.out.println("hello andCache delete"+user.getUserId());
}
@CacheEvict(value="listTreeDataByRoleId1",allEntries=true)
public final void setReservedUsers(String[] reservedUsers) {
System.out.println("hello listTreeDataByRoleId1 deleteall");
}
注释:
cacheNames/value :用来指定缓存组件的名字
key :缓存数据时使用的 key,可以用它来指定。默认是使用方法参数的值。(这个 key 你可以使用 spEL 表达式来编写)
keyGenerator :key 的生成器。 key 和 keyGenerator 二选一使用
cacheManager :可以用来指定缓存管理器。从哪个缓存管理器里面获取缓存。
condition :可以用来指定符合条件的情况下才缓存
unless :否定缓存。当 unless 指定的条件为 true ,方法的返回值就不会被缓存。当然你也可以获取到结果进行判断。(通过 #result 获取方法结果)
sync :是否使用异步模式。
缓存注解:
@Cache:缓存接口,定义缓存操作
@CacheManager:缓存管理器,管理各种缓存组件
@Cacheable:主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
@CacheEvict:清空缓存
@CachePut:保证方法被调用,又希望结果被缓存,更新缓存
@EnableCaching:开启基于注解的缓存
keyGennerator:缓存数据时key生成策略
serialize:缓存数据时value序列化策略