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

@Cacheable和@CachePut在相同的方法上,但条件相反

@Cacheable和@CachePut是Spring框架中用于缓存的注解。它们可以应用于相同的方法,但条件相反。

@Cacheable注解用于标记一个方法的返回值可以被缓存。当该方法被调用时,Spring会首先检查缓存中是否存在该方法的返回值,如果存在则直接返回缓存中的值,而不执行方法体。如果缓存中不存在该方法的返回值,则会执行方法体,并将返回值存入缓存中。

@CachePut注解也用于标记一个方法的返回值可以被缓存,但它的作用是无论缓存中是否存在该方法的返回值,都会执行方法体,并将返回值存入缓存中。换句话说,@CachePut注解会强制更新缓存中的值。

这两个注解的使用场景和优势如下:

  • 场景:适用于需要缓存方法返回值的情况,例如查询数据库、调用外部接口等耗时操作。
  • 优势:通过缓存可以提高系统的性能和响应速度,减少对底层资源的访问频率,提升用户体验。

推荐的腾讯云相关产品和产品介绍链接地址如下:

  • 腾讯云缓存Redis:提供高性能、可扩展的分布式缓存服务,支持多种数据结构和丰富的功能。详情请参考:https://cloud.tencent.com/product/redis
  • 腾讯云云数据库Redis版:提供高性能、高可靠性的云端数据库服务,支持主从复制、读写分离等特性。详情请参考:https://cloud.tencent.com/product/cdb_redis
  • 腾讯云云函数(SCF):无服务器计算服务,可用于处理缓存更新等业务逻辑。详情请参考:https://cloud.tencent.com/product/scf

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和项目情况进行评估和决策。

相关搜索:Spring cache @Cacheable和@CachePut。如果在@cachePut的方法内部抛出异常,则从Cache获取数据扩展和接口具有相同的方法,具有相同的参数,但返回类型不同RStudio代码在Windows上运行,但相同的代码在Linux上失败。模拟并发线程(在相同的资源/方法上)具有不同url但具有相同参数和相同方法功能的请求映射在hdfs上同步大小相同但内容不同的文件在条件相同但输出不同的情况下,如何组合变异?在if条件中,对于相同的条件,等于和不等于都返回true在sql中查找具有相同ID和条件的值的总和在接口和抽象类中使用相同的方法在名称不同但含义相同的字段上连接两个表虽然在vba中使用不同的方法剪切和粘贴相同的单元格,但输出不同?Android绑定适配器在相同的视图类型上使用相同的绑定名称,但用途不同R函数在相同的表和列中查找值,但值不同有条件地调用具有相同URL和Http谓词的操作方法在模型上测试尺度和精度的正确方法有没有一种方法可以合并执行相同任务但位于不同类和ids上的jQuery函数“集合已修改错误”,但仅在按键时使用相同的方法调用,而不是在单击按钮时使用相同的方法调用当片段的数量超过50个,但每个片段都有相同的布局和方法时,处理ViewPager和片段的正确方法是什么?在ios和android上的Rect原生完全相同的标题?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Cache抽象-缓存注解

SimpleCacheManager基于ConcurrentMap的配置 @CachePut 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用...在调用方法前,将对注解中声明的条件进行评估,满足条件才缓存。 与condition属性相反,可以使用unless属性排除某些不希望缓存的对象。...缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存,unless属性和condition属性相反,满足条件则不进行缓存 @Cacheable(cacheNames...,和 @Cacheable 不同的是,它每次都会触发真实方法的调用 @CachePut 和@Cacheable的效果几乎一样。...当我们想要指定相同类型的多个注释(例如同一方法的@CacheEvict或@CachePut)时,@Caching注释很方便。 假设我们有两个包含相同产品的缓存,使用相同的key。

89920

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

@Cacheable @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @Cacheable 作用和配置方法 参数 解释 example value 缓存的名称,...+userName); return getFromDB(userName); } @CachePut @CachePut 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable...不同的是,它每次都会触发真实方法的调用 @CachePut 作用和配置方法 参数 解释 example value 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 @CachePut(...@CacheEvict 作用和配置方法 参数 解释 example value 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 @CacheEvict(value=”my cache”...Book findBook(ISBN isbn) {…} } 条件缓存 下面提供一些常用的条件缓存 //@Cacheable将在执行方法之前( #result还拿不到返回值)判断condition,如果返回

4.2K20
  • Spring boot的缓存使用

    Spring框架为不同的缓存产品提供缓存抽象api,API的使用非常简单,但功能非常强大。今天我们将在缓存上看到基于注释的Java配置,请注意,我们也可以通过XML配置实现类似的功能。...它与@Cacheable支持相同的选项,应该用于缓存填充,而不是方法流优化。 请注意,通常不鼓励对同一方法使用@CachePut和@Cacheable注释,因为它们具有不同的行为。...虽然后者导致通过使用缓存跳过方法执行,但前者强制执行以执行缓存更新。 这会导致意外的行为,除了特定的角落情况(例如注释具有将它们彼此排除的条件)之外,应该避免这种声明。...@Caching 当同时需要CachePut和CacheEvict时,使用这个注释。 Spring启动提供与以下缓存提供程序的集成。...@Cacheable("student"),该注释在该特定方法中启用高速缓存,并且高速缓存名称是"student"。

    95810

    springboot使用cache缓存

    ,能够根据方法的请求参数对其进行缓存 @CacheEvict 清空缓存 @CachePut 保证方法被调用,又希望结果被缓存。...序列化策略 @CacheConfig 统一配置本类的缓存注解的属性 @Cacheable/@CachePut/@CacheEvict 主要的参数 名称 解释 value 缓存的名称,在 spring...深入源码,查看它的其它属性 我们打开@Cacheable注解的源码,可以看到该注解提供的其他属性,如: String[] cacheNames() default {}; //和value注解差不多,二选一...@CachePut注解的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用 。...但需要注意的是该注解的value 和 key 必须与要更新的缓存相同,也就是与@Cacheable 相同。

    90020

    Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项

    第1步:在启动类上加注解@EnableCaching第2步:在具体方法上加注解【@CachePut、@CacheEvict、@Caching】五、详细介绍介绍1)@Cacheable(常用)在 @Cacheable...这个配置规则和上面表格中的配置规则是相同的。...即只有 unless 指定的条件为 true 时,方法的返回值才不会被缓存。可以在获取到结果后进行判断。...与 @Cacheable 不同的是使用 @CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。...3)@CacheEvict(常用)@CacheEvict 是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。

    88800

    重学SpringBoot系列之Spring cache详解

    @CachePut 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用 作用和配置方法 /** * 添加tasklog...主要针对方法配置,能够根据一定的条件对缓存进行清空 一般用在更新或者删除的方法上。...,一个方法上只能有一个相同的注解生效。...但这几个注解通常都是作用在方法上的,而有些配置可能又是一个类通用的,这种情况就可以使用@CacheConfig了,它是一个类级别的注解,可以在类级别上配置cacheNames、keyGenerator、...不同的cacheNames会对应不同的Cache对象,比如我们可以在一个方法上定义两个cacheNames,虽然也可以用value,它是cacheNames的别名,但如果有多个配置的时候,更推荐用cacheNames

    1.6K11

    (转载非原创)SpringBoot系列(十五)整合缓存,项目会用得到的技术

    @EnableCaching @Cacheable @CachePut @CacheEvict @Caching @CacheConfig 1....condition:在符合这个条件下才进行缓存 unless:当这个条件为假的时候才进行缓存,与condition相反 当然还有cacheManager(缓存管理器)以及cacheResolver(缓存解析器...缓存的名称就是cache,设置在参数id大于20的时候才进行缓存,unless 则是相反的。 3....@Caching 借助官方的话说,有时,需要指定多个相同类型的注解(例如@CacheEvict或 @CachePut)——例如,因为不同缓存之间的条件或键表达式不同。...@Caching允许在同一方法上使用多个嵌套的 @Cacheable、@CachePut和@CacheEvict注释。实际上就是,各个缓存注解可以配合使用,操作不同的缓存空间。

    45920

    SpringBoot(十四)缓存还是要用起来

    @EnableCaching @Cacheable @CachePut @CacheEvict @Caching @CacheConfig 1....condition:在符合这个条件下才进行缓存 unless:当这个条件为假的时候才进行缓存,与condition相反 当然还有cacheManager(缓存管理器)以及cacheResolver(缓存解析器...缓存的名称就是cache,设置在参数id大于20的时候才进行缓存,unless 则是相反的。 3....@Caching 借助官方的话说,有时,需要指定多个相同类型的注解(例如@CacheEvict或 @CachePut)——例如,因为不同缓存之间的条件或键表达式不同。...@Caching允许在同一方法上使用多个嵌套的 @Cacheable、@CachePut和@CacheEvict注释。实际上就是,各个缓存注解可以配合使用,操作不同的缓存空间。

    54020

    Spring系列缓存注解@Cacheable @CacheEvit @CachePut 使用姿势介绍

    SpringBoot系列缓存注解@Cacheable @CacheEvit @CachePut使用姿势介绍 Spring在3.1版本,就提供了一条基于注解的缓存策略,实际使用起来还是很丝滑的,本文将针对几个常用的注解进行简单的介绍说明...,有需要的小伙伴可以尝试一下 本文主要知识点: @Cacheable: 缓存存在,则使用缓存;不存在,则执行方法,并将结果塞入缓存 @CacheEvit: 失效缓存 @CachePut: 更新缓存 Cacheable 这个注解用于修饰方法or类,当我们访问它修饰的方法时,优先从缓存中获取,若缓存中存在,则直接获取缓存的值;缓存不存在时,执行方法,并将结果写入缓存 这个注解,有两个比较核心的设置...,才走缓存;否则不写缓存 接下来是unless参数,从名字上可以看出它表示不满足条件时才写入缓存 /** * unless, 不满足条件才写入缓存 * * @param age * @return...小结 最后管理小结一下Spring提供的几个缓存注解 @Cacheable: 缓存存在,则从缓存取;否则执行方法,并将返回结果写入缓存 @CacheEvit: 失效缓存 @CachePut: 更新缓存

    77810

    SpringBoot缓存注解@Cacheable使用姿势介绍

    [logo.jpg] SpringBoot系列缓存注解@Cacheable @CacheEvit @CachePut使用姿势介绍 Spring在3.1版本,就提供了一条基于注解的缓存策略,实际使用起来还是很丝滑的...@Cacheable 这个注解用于修饰方法or类,当我们访问它修饰的方法时,优先从缓存中获取,若缓存中存在,则直接获取缓存的值;缓存不存在时,执行方法,并将结果写入缓存 这个注解,有两个比较核心的设置...,才走缓存;否则不写缓存 接下来是unless参数,从名字上可以看出它表示不满足条件时才写入缓存 /** * unless, 不满足条件才写入缓存 * * @param age * @return...注解,若缓存不命中,每次返回的结果应该都不一样,然而实际访问时,会发现返回的都是相同的 curl http://localhost:8080/?...小结 最后管理小结一下Spring提供的几个缓存注解 @Cacheable: 缓存存在,则从缓存取;否则执行方法,并将返回结果写入缓存 @CacheEvit: 失效缓存 @CachePut: 更新缓存

    6.2K11

    整合@Cache 和 Redis

    对于缓存声明,spring的缓存提供了一组java注解: @Cacheable:触发缓存写入。 @CacheEvict:触发缓存清除。 @CachePut:更新缓存(不会影响到方法的运行)。...@Cacheable注解 顾名思义,@Cacheable可以用来进行缓存的写入,将结果存储在缓存中,以便于在后续调用的时候可以直接返回缓存中的值,而不必再执行实际的方法。...还可以设置根据条件判断是否需要缓存 condition:取决于给定的参数是否满足条件 unless:取决于返回值是否满足条件 以下是一个简单的例子: @Cacheable(cacheNames="book...@CachePut注解 @CachePut:当需要更新缓存而不干扰方法的运行时 ,可以使用该注解。也就是说,始终执行该方法,并将结果放入缓存,注解参数与@Cacheable相同。...descriptor) 通常强烈建议不要对同一方法同时使用@CachePut和@Cacheable注解,因为它们具有不同的行为。

    72610

    springcache清除缓存_什么叫做缓存数据

    ,and,or,not,between,instanceof 条件 ?: (ternary),?: (elvis) 三、使用 1.添加缓存 @Cacheable 注解用于标记方法。...第一次执行的时候,会将方法结果存入缓存,再次调用该方法,在执行前,如果 key 相同则直接返回缓存中的数据,不会再次执行方法。...上述一些复杂的条件依赖于 sqEl 表达式 /* * 方法调用给前进行检测,若存在 key 对应的数据则直接从缓存中返回结果,否则在执行后将返回值存入缓存 * */ @Override @Cacheable...他的主要属性同 @Cacheable 基本相同,但是由于是先执行才处理数据,所以 key 是可以获得 #root.result 的。...当然,如果在方法上自己指定了另外的命名空间,则以方法上的注解为准。

    3K10

    缓存抽象层Spring cache实战操作

    4.1 @EnableCaching 该注解是启用Spring cache 的开关。必须开启才能使用Spring cache相关功能。 4.2 @Cacheable 可以标记在一个方法或者类上。...Spring在缓存方法的返回值时是以键值对进行缓存的,值就是方法的返回结果。...两者都可以执行缓存的“放入”操作,不同于@Cacheable,@CachePut每次都将执行方法并将返回值K-V放入缓存,如果该K存在则进行更新。其他属性可参考Cacheable。...4.5 @CacheEvict @CachEvict主要针对方法配置,能够根据一定的条件对特定的缓存进行清空。...有时候我们需要在一个方法上同时使用多个相同注解但是java是不支持一个注解在同一个方法上多次使用。这时就可以使用该注解进行组合。 5. 使用要点 缓存注解所在的方法不能在类中进行内部调用。

    76310

    springboot-cache的简单使用

    springboot-cache的注解讲解 1、@Cacheable注解 @Cacheable注解的作用是Spring在调用该方法之前,首先在缓存中查找方法的返回值,默认的key是根据参数值生成,如果存在...:指定符合条件的情况下才缓存 condition = “#a0=1” 当方法中第一个参数=1的时候才进行缓存 5.unless:否定缓存;当unless指定的条件为true,方法的返回值就不会被缓存;可以获取到结果进行判断...CachePut注解的作用简单的说一句话:既调用方法,又缓存数据。...key 是不一样的 这个时候要使用相同的key * **/ @CachePut(/*value = "userInfo", */key = "#userInfo.user_id")...=false * 默认代表缓存清除操作是在方法执行之后清除 如果出现异常 缓存就不会清除 * * beforeInvocation =true * 缓存的清除是否在方法之前执行 无论方法是否出现异常

    78920

    Spring Cache框架,实现了基于注解的缓存功能。

    层的方法上使用**@Cacheable、@CacheEvict、@CachePut**等注解,进行缓存操作。...Spring Cache 常用注解使用 在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。...#result表示方法调用结果的引用。 #root.method, #root.target, 和 #root.caches分别用于引用方法、目标对象和受影响的缓存的缓存。...方法名(#root.methodName)和目标类(#root.targetClass) 方法参数可以通过索引访问。...注解 案例 /** * Cacheable:在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中 *

    38110

    springboot高级特性-缓存

    缓存提供者 —>管理和控制多个CacheManager---->管理和控制多个唯一命名的cache----->存储在cache中的key-value对-------->Expiry 每一个存储在cache...EhCacheCaceh等 缓存注解 @Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @CacheEvict 清空缓存 @CachePut 保证方法被调用,又希望结果被缓存...;以后再有相同的数据,直接从缓存中取,不用去调方法; 在方法上加上cacheable注解缓存结果 @Cacheable(cacheNames = “emp”) @Cacheable(cacheNames...Cacheable注解是不能用result的 因为我们的@Cacheable注解要在目标方法执行之前按照key去查询缓存 所以没有方法返回的result的结果 这时候我们重新测试 http://localhost...= “emp”) 可以指定全局的配置 标注在类上该类的所有公共注解只需在类上配置一次即可 @CacheConfig(cacheNames = "emp") @Service public class

    38620

    spring boot 集成redis版本说明

    @Cacheable 作用和配置方法 @Cacheable public List selectAllUser(){ log.info("selectAllUser execute"...:主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会执行方法体 如果key存在,更新内容 如果key不存在,插入内容。...@CachePut 作用和配置方法 @CachePut(value="saveOfUpdate", key = "\"user_\" + #user.id") public User saveOfUpdate...下面提供一些常用的条件缓存 //@Cacheable将在执行方法之前( #result还拿不到返回值)判断condition,如果返回true,则查缓存; @Cacheable(value = "user...,默认提供的CacheManager对象可能不能满足需要 // 因此建议依赖业务和技术上的需求,自行做一些扩展和定制 // 这样就可以在使用Spring4中的@Cacheable、@CachePut

    1.4K40
    领券