SpringBoot2.0-缓存注解的使用及缓存原理

在SpringBoot中,当我们需要使用缓存时:第一步:在pom.xml文件中导入缓存依赖即可:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId>...
摘要由CSDN通过智能技术生成

在SpringBoot中,当我们需要使用缓存时:

第一步:在pom.xml文件中导入缓存依赖即可:

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

第二步:在SpringBoot启动类中标注 @EnableCaching开启缓存

@SpringBootApplication
@MapperScan(basePackages = {"com.lzj.cache.mapper"}) //扫描mapper接口
@EnableCaching //开启缓存
public class SpringbootCacheApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootCacheApplication.class, args);
    }
}

第三步:在需要使用缓存的方法上面添加如下注解:

@Cacheable  将方法的运行结果进行缓存;第二次再要相同的数据,直接从缓存中获取,不再调用方法;
@CacheEvict 移除缓存
@CachePut  修改了数据库的某个数据,同时更新缓存

下面对这三个注解进行解释:

@Cacheable:

 Cacheable中的几个属性:
1、cacheNames/value:指定缓存组件的名字, 数组的方式,可以指定多个缓存组件名称。
2、key: 缓存数据使用的key,默认使用方法参数的值作为key。也可以自己指定,通过编写
        SpEL指定key的值;如:#root.methodName 、#id等
3、keyGenerator: key的生成器,可以自己编写key的生成器组件。
   注意:在使用时key和keyGenerator二选一。
4、cacheManager: 指定缓存管理器。
5、condition: 指定符合条件的情况下才缓存;如: condition = "#id>0" "#a0>1"才进行缓存
6、unless: 否定缓存; 当unless指定的条件为true,方法的返回值就不会缓存;
           如:可以获取到结果进行判断unless = "#result == null "  当方法结果为null时,不缓存。
7、sync: 是否使用异步模式

@CacheEvit:

@CacheEvit:缓存清除
@CacheEvit和@Cacheable的相同属性就不再赘述。
1、allEntries = true 每次删除,将指定缓存中的所有数据全都删除
2、beforeInvocation=false ,缓存的清除是否是在方法之前执行,默认false, 即在方法之后清除,当方法执 
   行出现异常时,缓存不会清除。
   beforeInvocation=true ,方法之前清除,无论方法执行是否出现异常,缓存都会清除。

@CachePut

运行时机:先调用目标方法,将目标方法的结果缓存起来
属性与@Cacheable相同

此外还有@CacheConfig:可以标注在类上,抽取出相同的属性,简化代码。

@Target({Elemen
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值