SpringBoot学习之基于注解的缓存

目录
  • 主要使用到的注解:
  • 使用步骤
  • 注解属性介绍
    • @Cacheable() 的属性值及释义:
    • @CachPut属性值及释义:
    • @CachEvict属性值及释义:
    • @Caching
  • 总结

主要使用到的注解:

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

(0)

相关推荐

  • spring boot注解方式使用redis缓存操作示例

    本文实例讲述了spring boot注解方式使用redis缓存操作.分享给大家供大家参考,具体如下: 引入依赖库 在pom中引入依赖库,如下 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> &l

  • Spring Boot 基于注解的 Redis 缓存使用详解

    看文本之前,请先确定你看过上一篇文章<Spring Boot Redis 集成配置>并保证 Redis 集成后正常可用,因为本文是基于上文继续增加的代码. 一.创建 Caching 配置类 RedisKeys.Java package com.shanhy.example.redis; import java.util.HashMap; import java.util.Map; import javax.annotation.PostConstruct; import org.springf

  • SpringBoot学习之基于注解的缓存

    目录 主要使用到的注解: 使用步骤 注解属性介绍 @Cacheable() 的属性值及释义: @CachPut属性值及释义: @CachEvict属性值及释义: @Caching 总结 主要使用到的注解: @Cacheable(放入缓存) 能够根据方法的请求参数对其结果进行缓存 @CachePut(修改缓存中的值) 能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用 @CachEvict(清除缓存) 能够根据一定的条件对缓存进行清空 使用步骤

  • springboot整合mybatis-plus基于注解实现一对一(一对多)查询功能

    因为目前所用mybatis-plus版本为3.1.1,感觉是个半成品,所有在实体类上的注解只能支持单表,没有一对一和一对多关系映射,且该功能还在开发中,相信mybatis-plus开发团队在不久的将来应该会实现此功能. 由于本人开发习惯的原因,实在是太讨厌大量的xml充斥在整个项目中,尤其是表的mapper.xml,虽然有代码生成器可以生成,但是有些复杂的查询还是需要手写配置文件里的动态sql,这点比较反感(至于为什么反感,也是有多方面原因的). 不过可能是大量的java开发人员已经被虐惯了,已

  • Spring基于注解的缓存声明深入探究

    目录 一.概述 二.声明式基于注解的缓存 1.@Cacheable注解 (1) 默认缓存key的生成 (2) 声明式自定义key生成 (3) 默认缓存解析 (4) 自定义缓存解析 (5) 条件式缓存 2.@CachePut注解 3.@CacheEvict注解 4.@Caching注解 5.@CacheConfig注解 三.开启声明式缓存注解 四.使用自定义注解 一.概述 从3.1版本起,Spring框架就已经支持将缓存添加到现有的Spring应用中,和事务支持一样,缓存抽象允许在对代码影响最小的

  • 基于注解的springboot+mybatis的多数据源组件的实现代码

    通常业务开发中,我们会使用到多个数据源,比如,部分数据存在mysql实例中,部分数据是在oracle数据库中,那这时候,项目基于springboot和mybatis,其实只需要配置两个数据源即可,只需要按照 dataSource -SqlSessionFactory - SqlSessionTemplate配置好就可以了. 如下代码,首先我们配置一个主数据源,通过@Primary注解标识为一个默认数据源,通过配置文件中的spring.datasource作为数据源配置,生成SqlSessionF

  • 基于注解实现 SpringBoot 接口防刷的方法

    该示例项目通过自定义注解,实现接口访问次数控制,从而实现接口防刷功能,项目结构如下: 一.编写注解类 AccessLimit package cn.mygweb.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Targ

  • 学习SpringBoot容器功能及注解原理

    目录 1.组件添加 1.1@Configuration 1.2@Import 1.3@Conditional 2.原生配置文件引入 2.1@ImportResource 3.配置绑定 3.1@ConfigurationProperties 3.2@EnableConfigurationProperties + @ConfigurationProperties 1.组件添加 1.1@Configuration @Configuration:告诉SpringBoot这是一个配置类 配置类里面使用@B

  • SpringBoot日志注解与缓存优化详解

    目录 日志注解: 缓存的优化: 总结 日志注解: 关于SpringBoot中的日志处理,在之前的文章中页写过: 点击进入 这次通过注解+Aop的方式来实现日志的输出: 首先需要定义一个注解类:  @Target(ElementType.METHOD)  @Retention(RetentionPolicy.RUNTIME)  @Documented  public @interface LogAnnotation {      String module() default "";  

  • springboot 整合EhCache实现单服务缓存的操作方法

    目录 一.整合Spring Cache 与Ehcache 二.缓存的使用方法 三.缓存使用中的坑 在Spring框架内我们首选Spring Cache作为缓存框架的门面,之所以说它是门面,是因为它只提供接口层的定义以及AOP注解等,不提供缓存的具体存取操作.缓存的具体存储还需要具体的缓存存储,比如EhCache .Redis等.Spring Cache与缓存框架的关系有点像SLF4j与logback.log4j的关系. EhCache 适用于单体应用的缓存,当应用进行分布式部署的时候,各应用的副

  • Spring基于注解整合Redis完整实例

    在<Redis之--Spring整合Redis>一文中,向大家介绍了如何将spring与Redis整合起来,但不是基于注解的形式,很多同学都希望能够通过注解的形式来简单的将Spring与Redis整合起来,这样,在使用的时候,只需要在相应的方法上加上注解,便可以使方法轻松的调用Redis的缓存.那么今天就来向大家介绍如何用基于注解的形式来整合Spring与Redis. 一.项目搭建 今天,我们不使用hibernate来操作数据库了,我们今天选择的框架是: Spring4(包括mvc.conte

  • springboot中使用自定义两级缓存的方法

    工作中用到了springboot的缓存,使用起来挺方便的,直接引入redis或者ehcache这些缓存依赖包和相关缓存的starter依赖包,然后在启动类中加入@EnableCaching注解,然后在需要的地方就可以使用@Cacheable和@CacheEvict使用和删除缓存了.这个使用很简单,相信用过springboot缓存的都会玩,这里就不再多说了.美中不足的是,springboot使用了插件式的集成方式,虽然用起来很方便,但是当你集成ehcache的时候就是用ehcache,集成redi

随机推荐