首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Cache抽象-缓存注解

是一个组注解 @CacheConfig 类级别的全局缓存注解 完整示例 概述 Spring Cache提供了5种可以在方法级别或者类级别上使用缓存注解。...foo() 方法等,都是可以轻松做到. ---- @Cacheable :主要针对方法配置,能够根据方法请求参数对其结果进行缓存 @Cacheable是最主要注解,它指定了被注解方法返回值是可以被缓存...现实并不总是如此,有些情况下我们希望方法一定会被调用,因为其除了返回一个结果,还做了其他事情,例如记录日志,调用接口等,这个时候,我们可以用 @CachePut 注释,这个注释可以确保方法被执行,同时方法返回值也被记录到缓存...---- @Caching 主要针对方法配置, 是一个组注解 @Caching 是一个组注解可以为一个方法定义提供基于@Cacheable、@CacheEvict或者@CachePut注解数组。...前面的4个注解都是基于方法,如果在同一个类需要缓存方法注解属性都类似,则需要一个个重复增加,Spring4增加了@CacheConfig类级别的注解解决这个问题。

82320

整合@Cache 和 Redis

对于缓存声明,spring缓存提供了一组java注解: @Cacheable:触发缓存写入。 @CacheEvict:触发缓存清除。 @CachePut:更新缓存(不会影响到方法运行)。...@Cacheable注解 顾名思义,@Cacheable可以用来进行缓存写入,将结果存储在缓存,以便于在后续调用时候可以直接返回缓存值,而不必再执行实际方法。...@CachePut注解 @CachePut:当需要更新缓存而不干扰方法运行时 ,可以使用该注解。也就是说,始终执行该方法,并将结果放入缓存,注解参数与@Cacheable相同。...descriptor) 通常强烈建议不要对同一方法同时使用@CachePut和@Cacheable注解,因为它们具有不同行为。...,我们可以使用@CacheConfig在类上进行全局设置。

69010
您找到你想要的搜索结果了吗?
是的
没有找到

(11)SpringBoot整合EhCache做缓存

在SpringBoot项目中整合EhCache做缓存,具体步骤如下: 1.pom.xml 我们在pom.xml引入相关依赖: <!...:@EnableCaching 启动类加此注解后,会自动开启SpringBoot对缓存支持 @EnableCaching 3.配置文件ehcache.xml 在resources包下新建一个ehcache.xml...配置文件,用于配置ehcache缓存参数,我这里习惯在resources下再建一个resource文件夹,专门存放配置文件,所以我这里结构是:main\resources\resource\ehcache.xml...,添加@CacheConfig(),然后在需要缓存方法上添加对应缓存注解。...在这里@CacheConfig(cacheNames = "user"):配置了该数据访问对象返回内容将存储于名为user缓存对象我们可以不使用该注解,直接通过@Cacheable自己配置缓存集名字来定义

98710

Spring 整合 Redis

-- 启用缓存注解功能,这个是必须,否则注解不会生效,另外,该注解一定要声明在spring主配置文件才会生效 --> <cache:annotation-driven cache-manager="...<em>可以</em>直接在service方法上面开启<em>注解</em>: 有4个<em>注解</em>@<em>Cacheable</em>,@<em>CachePut</em> , @CacheEvict,@<em>CacheConfig</em> @<em>Cacheable</em>、@<em>CachePut</em>、@CacheEvict...,在 spring 配置<em>文件</em><em>中</em>定义,必须指定至少一个例如:这里和上面的name <em>的</em>value对应,楼主这里写<em>的</em>是common @<em>Cacheable</em>(value=”mycache”) 或者 @<em>Cacheable</em>...,和 @<em>Cacheable</em> 不同<em>的</em>是,它每次都会触发真实方法<em>的</em>调用 @<em>CachePut</em> 主要<em>的</em>参数 value 缓存<em>的</em>名称,在 spring 配置<em>文件</em><em>中</em>定义,必须指定至少一个例如: @<em>Cacheable</em>...()里面都有一个value=“xxx”<em>的</em>属性,这显然如果方法多了,写起来也是挺累<em>的</em>,如果<em>可以</em>一次性声明完 那就省事了, 所以,有了@<em>CacheConfig</em>这个配置,@<em>CacheConfig</em> is a

50620

Spring整合Ehcache管理缓存

EhcacheDemo工作步骤如下: 在EhcacheDemo我们引用ehcache.xml声明名为helloworld缓存来创建Cache对象; 然后我们用一个键值对来实例化Element对象...// 除了可以使用xml文件配置缓存,你也可以使用API动态增删缓存 // 添加缓存 manager.addCache(cacheName); // 使用默认配置添加缓存 CacheManager...你有两个选择: 在xml声明:像上一节spring-ehcache.xml做法一样,使用 使用标记注解:你也可以通过对一个类进行注解修饰方式在这个类中使用缓存注解。...下面三个注解都是方法级别: @Cacheable 表明所修饰方法是可以缓存:当第一次调用这个方法时,它结果会被缓存下来,在缓存有效时间内,以后访问这个方法都直接返回缓存结果,不再执行方法代码段...@CachePut 与@Cacheable不同,@CachePut不仅会缓存方法结果,还会执行方法代码段。 它支持属性和用法都与@Cacheable一致。

53020

Spring整合Ehcache管理缓存

EhcacheDemo工作步骤如下: 在EhcacheDemo我们引用ehcache.xml声明名为helloworld缓存来创建Cache对象; 然后我们用一个键值对来实例化Element...使用CacheManageraddCache方法可以根据缓存名将ehcache.xml声明cache添加到容器;它也可以直接将Cache对象添加到缓存容器。...// 除了可以使用xml文件配置缓存,你也可以使用API动态增删缓存 // 添加缓存 manager.addCache(cacheName); // 使用默认配置添加缓存 CacheManager...下面三个注解都是方法级别: @Cacheable 表明所修饰方法是可以缓存:当第一次调用这个方法时,它结果会被缓存下来,在缓存有效时间内,以后访问这个方法都直接返回缓存结果,不再执行方法代码段...@CachePut 与@Cacheable不同,@CachePut不仅会缓存方法结果,还会执行方法代码段。 它支持属性和用法都与@Cacheable一致。

1.7K70

Spring Boot二级缓存配置

超时时间未生效 关键问题在于没有指定缓存类型为ehcache,ehcache.xml文件压根就没有生效。...key生成策略,需在@Cacheable注解通过keyGenerator属性指定具体key生成策略 * 可以根据业务情况,配置多个生成策略 * 如: @Cacheable(value...key,使用@Cacheable注解时,将其value属性设置为dictionary,那么这个dictionary缓存失效时间就是这里我们自定义失效时间(cacheExpireTime)...= "#name") 其中 cacheNames 时缓存名称也可以使用value,使用Ehcache时候,如果和XML配置对应,可以生效对应规则,如果不对应会使用默认规则。...@CacheEvict 清空缓存 @CacheConfig 所有的@Cacheable()里面都有一个value="xxx"属性,这显然如果方法多了,写起来也是挺累我们可以在类上声明@CacheConfig

22510

Spring Boot---(14)Spring Boot 整合EhCache做缓存

同时它也能提供基于FilterCache,该Filter可以缓存响应内容并采用 Gzip压缩提高响应速度。 1.pom.xml <!...配置文件 新建ehcache.xml,在resources包下 <?...4.持久层和方法上加上注解 我这里持久层用jpa,在持久层上加上@CacheConfig(cacheNames = "user"),cacheNames 可以自定义,这是缓存key,哪个方法需要缓存...在这里@CacheConfig(cacheNames = "users"):配置了该数据访问对象返回内容将存储于名为users缓存对象我们可以不使用该注解,直接通过@Cacheable自己配置缓存集名字来定义...除了这里用到两个注解之外,还有下面几个核心注解: @CachePut:配置于函数上,能够根据参数定义条件来进行缓存,它与@Cacheable不同是,它每次都会真是调用函数,所以主要用于数据新增和修改操作上

98130

springboot使用cache缓存

使用Spring缓存抽象时我们需要关注以下两点; 确定方法需要被缓存以及他们缓存策略 从缓存读取之前缓存存储数据 二:几个重要概念&缓存注解 名称 解释 Cache 缓存接口,定义缓存操作。...序列化策略 @CacheConfig 统一配置本类缓存注解属性 @Cacheable/@CachePut/@CacheEvict 主要参数 名称 解释 value 缓存名称,在 spring...配置文件定义,必须指定至少一个。...深入源码,查看它其它属性 我们打开@Cacheable注解源码,可以看到该注解提供其他属性,如: String[] cacheNames() default {}; //和value注解差不多,二选一...当我们需要缓存地方越来越多,你可以使用@CacheConfig(cacheNames = {"myCache"})注解来统一指定value值,这时可省略value,如果你在你方法依旧写上了value

82620

“8个步骤”手把手带你用SpringBoot操作Redis,实现数据缓存!

,Redis 把数据对象都存储在内存当中,它可以支持周期性把更新数据写入磁盘文件。...@Cacheable: 作用于方法上,用于对于方法返回结果进行缓存,如果已经存在该缓存,则直接从缓存获取,缓存key可以从入参中指定,缓存 value 为方法返回值。...上面注解常用配置参数: value: 缓存管理器配置缓存名称,这里可以理解为一个组概念,缓存管理器可以有多套缓存配置,每套都有一个名称,类似于组名,这个可以配置这个值,选择使用哪个缓存名称...如果我们需要灵活设置缓存,可以不用 SpringCache 提供注解,直接在代码中使用 Spring-data-redis 包提供方法,手动操作 key 与 value。...,里面使用 @Cacheable、@CachePut、@CacheEvict 三个注解完成对用户与用户信息数据缓存。

7.8K47

Spring Cache优化

spring cache spring cache是spring框架自带一套缓存框架,其具有多种实现,比较常用是基于Redis实现,其核心注解有 @CacheConfig,@Cacheable,@...CachePut,@CacheEvict,不熟悉用法可以参考官方文档,有很详细说明,https://docs.spring.io/spring-framework/docs/current/reference...这里主要介绍一下@CacheConfig这个注解,此注解有四个属性,cacheNames 用于指定缓存名字,可以按照在缓存按模块保存,keyGenerator 缓存键生成器,如果指定了缓存键则忽略,cacheManager...@ICacheConfig对原生注解@CacheConfig做了再封装,增加了三个属性,另外三个注解只是对spring cache对应原生注解起了个别名,以后可能会有拓展需要。...allEntries = true) public void deleteById(Integer id) { log.debug("删除 {}", id); } } 在配置文件开启缓存

70220

SpringBoot系列之缓存使用教程

模块 3.4、主要注解例子实践 3.4.1、@EnableCaching 3.4.2、@Cacheable注解 3.4.3、@CachePut注解 3.4.4、 @CacheEvic注解 3.4.5、@...接口来统一不同缓存技术;并支持使用Java Caching(JSR-107)注解简化我们进行缓存开发。...注解 @CachePut注解也是一个用来缓存注解,不过缓存和@Cacheable有明显区别是即调用方法,又更新缓存数据,也就是执行方法操作之后再来同步更新缓存,所以这个主键常用于更新操作,也可以用于查询...@Caching 用于定义复杂缓存规则,可以集成@Cacheable和 @CachePut // @Caching 定义复杂缓存规则 @Caching( cacheable...注解 @CacheConfig注解可以用于抽取缓存公共配置,然后在类加上就可以,eg:@CacheConfig(cacheNames = {"emp"},cacheManager = "employeeCacheManager

78130

重学SpringBoot系列之Spring cache详解

缓存spel表达式可取值 @CachePut @CacheEvict @Caching @CacheConfig 自定义缓存注解 完整应用案例 结合源码剖析注解运行流程 入口:基于AOP拦截器...但我们仍然需要显式地在代码中去调用与缓存有关接口和方法,在合适时候插入数据到缓存里,在合适时候从缓存读取数据。 想一想AOP适用场景,这不就是天生就应该AOP去做?...比如之前那个@Caching组合,会让方法上注解显得整个代码比较乱,此时可以使用自定义注解把这些注解组合到一个注解,如: @Caching(put = { @CachePut(value...前面提到几个注解@Cacheable、@CachePut、@CacheEvict、@CacheConfig,都有一些可配置属性。...这里condition也是@Cacheable定义一个配置,它是一个EL表达式,比如我们可以这样用来缓存id大于1Book: @Override @Cacheable(cacheNames =

1.1K11

Spring Boot缓存介绍

@CachePut:表示一个方法可以使用缓存,无论缓存是否已经存在相应数据,都执行方法并将结果存储到缓存。@CacheEvict:表示从缓存删除指定缓存项。...以下是Spring Boot基本缓存配置示例:首先,需要在pom.xml添加缓存相关依赖项,例如: org.springframework.boot...在应用程序配置多个缓存管理器时,可以使用@Cacheable注解cacheNames属性指定使用哪个缓存管理器。此外,还可以使用@CacheConfig注解在类级别上设置缓存名称和其他属性。...同时,@Cacheable注解没有指定缓存名称,因此它将使用@CacheConfig注解设置缓存名称。...")); factoryBean.setShared(true); return factoryBean;}在上面的示例我们使用了Ehcache作为缓存管理器实现,并将Ehcache配置文件位置设置为

95840

spring boot 集成redis版本说明

Spring cache注解如何使用 在spring cache与redis集成之后,我们可以使用spring cache自带注解功能 缓存主要使用方式包括以下两方面 缓存声明,需要根据项目需求来妥善应用缓存...缓存配置方式,选择需要缓存支持,例如Ecache、redis、memercache等 @CacheConfig:该注解可以将缓存分类,它是类级别的注解方式。...@Cacheable:主要针对方法配置,能够根据方法请求参数对其结果进行缓存 1.如果key不存在,执行方法体,并将结果更新到缓存。 2.如果key存在,直接查询缓存数据。...,会让方法显较臃肿,可以通过自定义注解把这些注解组合到一个注解,如: @Caching(put = { @CachePut(value = "user", key = "#user.id"), @CachePut...,默认提供CacheManager对象可能不能满足需要 // 因此建议依赖业务和技术上需求,自行做一些扩展和定制 // 这样就可以在使用Spring4@Cacheable、@CachePut

1.1K40

另一种缓存,Spring Boot 整合 Ehcache

这里采用第二个,在 pom.xml 文件,引入 Ehcache 依赖: org.springframework.boot...注意 默认情况下,这个文件名是固定,必须叫 ehcache.xml ,如果一定要换一个名字,那么需要在 application.properties 明确指定配置文件名,配置方式如下: spring.cache.ehcache.config...@CacheConfig 这个注解在类上使用,用来描述该类中所有方法使用缓存名称,当然也可以不使用该注解,直接在具体缓存注解上配置名称,示例代码如下: @Service@CacheConfig(cacheNames...Cacheable 注解,通过 key 属性来指定 key ,如上代码就表示只使用 id 作为缓存 key ,如果对 key 有复杂要求,可以自定义 keyGenerator 。...这个注解一般加在更新方法上,当数据库数据更新后,缓存数据也要跟着更新,使用该注解可以将方法返回值自动更新到已经存在 key 上,示例代码如下: @CachePut(key = "#user.id

47730

张三进阶之路 | 基于Spring Cache实现缓存技术

添加依赖在pom.xml添加Spring Boot和Redis相关依赖: org.springframework.boot</groupId...在Spring Cache抽象,有三个常用注解:@Cacheable、@CachePut和@CacheEvict。...这些注解可以帮助我们在方法上定义缓存行为,使得开发者能够轻松地添加缓存功能到应用程序。✈️ @Cacheable@Cacheable注解用于声明一个方法结果是可以缓存。...✈️ @CachePut @CachePut注解用于声明一个方法结果应该被放入缓存。每次调用该方法时,都会执行方法并将结果存入缓存,无论缓存是否已存在该键值对。...通过使用这些注解可以轻松地在方法上定义缓存行为,从而提高应用程序性能和响应速度。在实际项目中,我们可能需要根据需求选择合适注解来实现不同缓存策略。

40420

cacheable更新_详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

在 spring 配置文件定义,必须指定至少一个 例如: @Cacheable(value=”mycache”) @Cacheable(value={”cache1”,”cache2”} key 缓存...这里缓存 key 就是参数 userName,value 就是 Account 对象。“accountCache”缓存是在 spring*.xml 定义名称。...不同是,它每次都会触发真实方法调用 @CachePut 作用和配置方法 参数 解释 example value 缓存名称,在 spring 配置文件定义,必须指定至少一个 @CachePut(...所有的@Cacheable()里面都有一个value=“xxx”属性,这显然如果方法多了,写起来也是挺累,如果可以一次性声明完 那就省事了, 所以,有了@CacheConfig这个配置,@CacheConfig...@Caching组合,会让方法上注解显得整个代码比较乱,此时可以使用自定义注解把这些注解组合到一个注解,如: @Caching(put = { @CachePut(value = “user”,

3.4K20

springboot cache 基本使用

实现类 接着会生成被@Cacheable(或者其他SpringCache注解修饰过)代理类,并会将管理它CacheManager赋值进去 1.依赖 无需依赖,spingboot 已经集成,开启使用就行...) key @Cacheable/@CachePut/@CacheEvict 参数详解: 参数作用value、cacheName缓存名称,数组类型,至少定义一个,例如:@Cacheable...若需要指定一个自定义key生成器,我们需要去实现org.springframework.cache.interceptor.KeyGenerator接口,并使用该参数来指定。...@CachePut,此注解方法会直接进入,将更新后数据放入cacheNames缓存。...类似更新操作 @CacheEvict 清除所有缓存 一个类注解 @CacheConfig我们需要缓存地方越来越多,你可以使用@CacheConfig(cacheNames = {“myCache

53230

自定义注解设置缓存有效期正确姿势

引言 redis缓存有效期可以通过xml配置文件设置(默认有效期),也可以通过编码方式手动去设置,但是这两种方式都存在缺陷。...xml方式设置是全局默认有效期,虽然灵活,但不能给某个缓存设置单独有效期;硬编码方式虽然可以给不同缓存设置单独有效期,但是管理上不够灵活。...Spring提供Cache相关注解并没有提供有效期配置参数,so,自定义注解实现缓存有效期灵活设置诞生了。...,void setExpires(Map expires),该方法传入参数是一个Map,Mapkey值是@Cacheable(或@CacheEvict或@CachePut...newHashSet(cacheConfig.cacheNames()) : newHashSet(cacheable.value()); } } Springxml配置 完整配置redisCacheContext.xml

1.1K70

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券