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注解的缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot操作Jedis案例代码

    SpringBoot操作Jedis案例代码

    这篇文章主要介绍了SpringBoot操作Jedis案例代码,代码部分包括pom依赖、配置相关参数、JedisPool的设置,代码简单易懂对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 浅谈Springboot下引入mybatis遇到的坑点

    浅谈Springboot下引入mybatis遇到的坑点

    这篇文章主要介绍了Springboot下引入mybatis遇到的坑点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java生成在线验证码

    java生成在线验证码

    这篇文章主要介绍了java生成在线验证码,需要的朋友可以参考下
    2023-10-10
  • SpringBoot 集成 activiti的示例代码

    SpringBoot 集成 activiti的示例代码

    这篇文章主要介绍了SpringBoot 集成 activiti的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 6种SpringBoot解决跨域请求的方法整理

    6种SpringBoot解决跨域请求的方法整理

    跨域资源共享是一种标准机制,允许服务器声明哪些源可以访问其资源,在SpringBoot应用中,有多种方式可以解决跨域问题,本文主要介绍了6种常见的解决方案,大家可以根据需求自行选择
    2025-04-04
  • Spring Boot整合持久层之JdbcTemplate多数据源

    Spring Boot整合持久层之JdbcTemplate多数据源

    持久层是JavaEE中访问数据库的核心操作,SpringBoot中对常见的持久层框架都提供了自动化配置,例如JdbcTemplate、JPA 等,MyBatis 的自动化配置则是MyBatis官方提供的。接下来分别向读者介绍Spring Boot整合这持久层技术中的整合JdbcTemplate
    2022-08-08
  • Spring应用抛出NoUniqueBeanDefinitionException异常的解决方案

    Spring应用抛出NoUniqueBeanDefinitionException异常的解决方案

    这篇文章介绍了解决org.springframework.beans.factory.NoUniqueBeanDefinitionException异常的一些解决方案,从这些解决方案可以看出Spring框架的设计精妙,遇见此问题的朋友可以参考下该解决方案
    2021-06-06
  • Java欧拉函数的计算代码详解

    Java欧拉函数的计算代码详解

    这篇文章主要介绍了Java实现欧拉函数的计算,从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明,本文通过实例代码给大家介绍的很详细,需要的朋友可以参考下
    2021-05-05
  • 解决@Cacheable在同一个类中方法调用不起作用的问题

    解决@Cacheable在同一个类中方法调用不起作用的问题

    这篇文章主要介绍了解决@Cacheable在同一个类中方法调用不起作用的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Spring Boot 集成 Swagger2构建 API文档

    Spring Boot 集成 Swagger2构建 API文档

    这篇文章主要介绍了Spring Boot 集成 Swagger2构建 API文档,通过使用 Swagger,我们只需要按照它所给定的一系列规范去定义接口以及接口的相关信息,然后它就能帮我们自动生成各种格式的接口文档,方便前后端开发者进行前后端联调,下文需要的朋友可以参考一下
    2022-03-03

最新评论