SpringBoot学习之基于注解的缓存

 更新时间:2022年03月30日 11:21:20   作者:这世界那么多上官婉儿  
spring boot对缓存支持非常灵活,我们可以使用默认的EhCache,也可以整合第三方的框架,只需配置即可,下面这篇文章主要给大家介绍了关于SpringBoot学习之基于注解缓存的相关资料,需要的朋友可以参考下

主要使用到的注解:

  • @Cacheable(放入缓存) 能够根据方法的请求参数对其结果进行缓存
  • @CachePut(修改缓存中的值) 能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用
  • @CachEvict(清除缓存) 能够根据一定的条件对缓存进行清空

使用步骤

1、@EnableCaching 这个注解,标注在 springboot 主启动类上,表示系统开启缓存。

@EnableCaching
@SpringBootApplication(scanBasePackages = CommonConstant.DEFAULT_PACKAGE_NAME)
public class PortalApp {
    public static void main(String[] args) {
        SpringApplication.run(PortalApp.class, args);
        }
    }

2、在对应需要进行缓存的方法上加入对应的注解即可;

注解属性介绍

@Cacheable() 的属性值及释义:

value/cacheNames = "demoCommon";//redis的第一层文件夹为demoCommon key="#id"; //系统自定义key值格式,相当于value下边一层 unless = "#result==null";//方法返回值结果为空时,不存入缓存;

代码示例如下:

//-- 根据id查询demo
@Cacheable(cacheNames = "demoCommon", unless = "#result==null", key="#id")
public Demo queryById(String id) {
    return demoMapper.queryById(id);
}

调用上述接口,会将接口返回的数据以下图格式存入redis,接口再使用此id作为参数查询时,会直接去缓存里拿:

@CachPut属性值及释义:

value/cacheNames = "demoCommon";//redis的第一层文件夹为demoCommon keyGenerator="myKeyGenerator"; //系统自定义key值格式,相当于value下边一层

调用示例如下:

@CachePut(value = "demoCommon", key=#"#demo.id")
public Demo updateById(Demo demo) {
    demoMapper.updateById(demo);
    return demo;
}

调用上图接口,会根据传入的id找到对应的key缓存的值,并修改缓存中的value;

@CachEvict属性值及释义:

value/cacheNames = "demoCommon";//redis的第一层文件夹为demoCommon key=#"#demo.id"; //系统自定义key值格式,相当于value下边一层 allEntries="true";// 是否清空所有缓存内容,缺省为 false,如果指定为 true,则方法调用后将立即清空value/cachaeNames下边的所有缓存

@CacheEvict(value = "demoCommon",allEntries="true",key = "#demo.id")
public Demo deleteById(Demo demo) {
    demoMapper.deleteById(demo);
    return demo;
}

调用接口后,redis为:

@Caching

接口需要使用多个注解标签,则可使用此注解;示例如下:

@Caching(put = {
        @CachePut(value = "demoCommon1", key = "#demo.id")
        @CachePut(value = "demoCommon2", key = "#demo.id")
        @CachePut(value = "demoCommon3", key = "#demo.id")
})
public Demo updateByIdC(Demo demo) {
    demoMapper.updateById(demo);
    return demo;
}

总结

到此这篇关于SpringBoot基于注解的缓存的文章就介绍到这了,更多相关SpringBoot注解的缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring解决循环依赖问题的三种方法小结

    Spring解决循环依赖问题的三种方法小结

    在 Spring 中,循环依赖问题指的是两个或多个 bean 之间相互依赖形成的闭环,具体而言,当 bean A 依赖于 bean B,同时 bean B 也依赖于 bean A,就形成了循环依赖,本文就给大家介绍了Spring解决循环依赖问题的三种方法,需要的朋友可以参考下
    2023-09-09
  • Java8之Lambda表达式使用解读

    Java8之Lambda表达式使用解读

    这篇文章主要介绍了Java8之Lambda表达式使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔断的示例

    Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔断的示例

    这篇文章主要介绍了Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔断的示例,帮助大家更好的理解和学习使用Spring Cloud,感兴趣的朋友可以了解下
    2021-03-03
  • Spring 中@Validated 分组校验的使用解析

    Spring 中@Validated 分组校验的使用解析

    这篇文章主要介绍了Spring 中@Validated 分组校验的使用解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 简单介绍Java 方法的重载、可变参数、作用域

    简单介绍Java 方法的重载、可变参数、作用域

    这篇文章主要简单介绍Java 方法的重载、可变参数、作用域的相关资料,需要的朋友可以参考下
    2023-07-07
  • Java SE之了解泛型

    Java SE之了解泛型

    这篇文章主要介绍了Java SE之了解泛型,文章内容详细,简单易懂,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2023-01-01
  • Java经典设计模式之责任链模式原理与用法详解

    Java经典设计模式之责任链模式原理与用法详解

    这篇文章主要介绍了Java经典设计模式之责任链模式,简单说明了责任链模式的概念、原理,并结合实例形式分析了java实现责任链模式的具体用法与相关注意事项,需要的朋友可以参考下
    2017-08-08
  • Java 代码检查工具之PMD入门使用详细教程

    Java 代码检查工具之PMD入门使用详细教程

    这篇文章主要介绍了Java 代码检查工具之PMD入门使用详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java中的static和final关键字的使用详解

    Java中的static和final关键字的使用详解

    这篇文章主要介绍了Java中的static和final关键字的使用详解,  当方法名前有static,即为static方法,可以方便我们无需创建对象也可以调用此方法,静态方法比较拉,只可以访问 静态的 属性/变量/方法,无法访问非静态的这些属性/变量/方法,需要的朋友可以参考下
    2024-01-01
  • Java剑指offer之删除链表的节点

    Java剑指offer之删除链表的节点

    这篇文章主要介绍了Java剑指offer之删除链表的节点,给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点,下文更多相关内容介绍,需要的小伙伴可以参考一下
    2022-04-04

最新评论