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

当实际数据被修改时,@Cacheable注释方法会执行吗?

当实际数据被修改时,@Cacheable注解的方法不会执行。@Cacheable注解是用于缓存方法的返回结果,当方法被调用时,会先检查缓存中是否存在该方法的结果,如果存在则直接返回缓存的结果,不会执行方法体内的代码。只有当缓存中不存在该方法的结果时,才会执行方法体内的代码,并将结果存入缓存中。

因此,当实际数据被修改时,缓存中的数据并不会被更新,@Cacheable注解的方法也不会被执行。如果需要在数据被修改时更新缓存,可以使用@CachePut注解来标记方法,@CachePut注解会执行方法体内的代码,并将结果存入缓存中,从而更新缓存数据。

推荐的腾讯云相关产品:腾讯云云数据库Redis、腾讯云云函数SCF。

  • 腾讯云云数据库Redis:腾讯云提供的高性能、可扩展的内存数据库服务,支持缓存、持久化、高可用等特性。适用于缓存加速、会话存储、消息队列等场景。了解更多信息,请访问:腾讯云云数据库Redis
  • 腾讯云云函数SCF:腾讯云提供的事件驱动的无服务器计算服务,可以在云端运行代码,无需管理服务器。适用于处理异步任务、定时任务、Webhook等场景。了解更多信息,请访问:腾讯云云函数SCF
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring 中注解大全和应用

@Cacheable 用来标记缓存查询。可用用于方法或者类中, 标记在一个方法上时表示该方法是支持缓存的, 标记在一个类上时则表示该类所有的方法都是支持缓存的。...用来修饰一个非静态的void()方法 也就是spring容器启动时就执行,多用于一些全局配置、数据字典之类的加载 @PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次...PreDestroy()方法在destroy()方法执行执行之后 @PreDestroy @PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet...@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet彻底卸载之前 @Repository 用于标注数据访问组件,即DAO组件 @Component 泛指组件,组件不好归类的时候...@SessionAttributes 默认情况下Spring MVC将模型中的数据存储到request域中。一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。

46420

Spring的所有注解都在这,别再说没见过不会用了

从结果就能看出,用在方法参数中的 @ModelAttribute 注解,实际上是一种接受参数并且自动放入 Model 对象中,便于使用。 @Cacheable 用来标记缓存查询。...比如 @Cacheable(value="UserCache") 标识的是调用了标记了这个注解的方法时,逻辑默认加上从缓存中获取结果的逻辑,如果缓存中没有数据,则执行用户编写查询逻辑,查询成功之后,同时将结果放入缓存中... @PostConstruct 修饰的方法会在服务器加载 Servlet 的时候运行,并且只会被服务器执行一次。PostConstruct 在构造函数之后执行, init() 方法之前执行。...@PreDestroy @PreDestroy 修饰的方法会在服务器卸载 Servlet 的时候运行,并且只会被服务器调用一次,类似于 Servlet 的 destroy() 方法。... @PreDestroy 修饰的方法会在 destroy() 方法之后运行,在 Servlet 彻底卸载之前。 @Repository 用于标注数据访问组件,即 DAO 组件。

57710
  • Spring 中的 18 个注解,你会几个?

    从结果就能看出,用在方法参数中的@ModelAttribute注解,实际上是一种接受参数并且自动放入Model对象中,便于使用。 @Cacheable 用来标记缓存查询。...比如@Cacheable(value="UserCache") 标识的是调用了标记了这个注解的方法时,逻辑默认加上从缓存中获取结果的逻辑,如果缓存中没有数据,则执行用户编写查询逻辑,查询成功之后,同时将结果放入缓存中...用来修饰一个非静态的void()方法 也就是spring容器启动时就执行,多用于一些全局配置、数据字典之类的加载 @PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次...PreDestroy()方法在destroy()方法执行执行之后 @PreDestroy @PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet...@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet彻底卸载之前 @Repository 用于标注数据访问组件,即DAO组件 @Component 泛指组件,

    40260

    Spring中的18个注解,你会几个?

    @Cacheable 用来标记缓存查询。可用用于方法或者类中, 标记在一个方法上时表示该方法是支持缓存的, 标记在一个类上时则表示该类所有的方法都是支持缓存的。...用来修饰一个非静态的void()方法 也就是spring容器启动时就执行,多用于一些全局配置、数据字典之类的加载 @PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次...PreDestroy()方法在destroy()方法执行执行之后 @PreDestroy @PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet...@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet彻底卸载之前 @Repository 用于标注数据访问组件,即DAO组件 @Component 泛指组件,组件不好归类的时候...@SessionAttributes 默认情况下Spring MVC将模型中的数据存储到request域中。一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。

    40220

    Spring中注解大全和应用

    @Cacheable 用来标记缓存查询。可用用于方法或者类中, 标记在一个方法上时表示该方法是支持缓存的, 标记在一个类上时则表示该类所有的方法都是支持缓存的。...用来修饰一个非静态的void()方法 也就是spring容器启动时就执行,多用于一些全局配置、数据字典之类的加载 @PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次...PreDestroy()方法在destroy()方法执行执行之后 @PreDestroy @PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet...@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet彻底卸载之前 @Repository 用于标注数据访问组件,即DAO组件 @Component 泛指组件,组件不好归类的时候...@SessionAttributes 默认情况下Spring MVC将模型中的数据存储到request域中。一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。

    36020

    Spring中的18个注解,你会几个

    @Cacheable 用来标记缓存查询。可用用于方法或者类中, 标记在一个方法上时表示该方法是支持缓存的,标记在一个类上时则表示该类所有的方法都是支持缓存的。 参数列表 ?...比如@Cacheable(value="UserCache") 标识的是调用了标记了这个注解的方法时,逻辑默认加上从缓存中获取结果的逻辑,如果缓存中没有数据,则执行用户编写查询逻辑,查询成功之后,同时将结果放入缓存中...用来修饰一个非静态的void()方法 也就是spring容器启动时就执行,多用于一些全局配置、数据字典之类的加载 @PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次...PreDestroy()方法在destroy()方法执行执行之后 @PreDestroy @PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet...@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet彻底卸载之前 @Repository 用于标注数据访问组件,即DAO组件 @Component 泛指组件,组件不好归类的时候

    39270

    Spring Cache抽象-缓存注解

    客户端“Calling code”调用一个普通类 Plain Object 的 foo() 方法的时候,是直接作用在 pojo 类自身对象上的,客户端拥有的是调用者的直接的引用 动态代理调用图: ?...Spring cache 利用了 Spring AOP 的动态代理技术,即客户端尝试调用 pojo 的 foo()方法的时候,给他的不是 pojo 自身的引用,而是一个动态生成的代理类,这个时候,实际客户端拥有的是一个代理的引用...希望使用方法返回值来更新缓存时可以选择这种方法 如果使用了 @Cacheable 注释,则重复使用相同参数调用方法的时候,方法本身不会被调用执行,即方法本身略过了,结果直接从缓存中找到并返回了。...现实中并不总是如此,有些情况下我们希望方法一定会被调用,因为其除了返回一个结果,还做了其他事情,例如记录日志,调用接口等,这个时候,我们可以用 @CachePut 注释,这个注释可以确保方法被执行,同时方法的返回值也记录到缓存中...当我们想要指定相同类型的多个注释(例如同一法的@CacheEvict或@CachePut)时,@Caching注释很方便。 假设我们有两个包含相同产品的缓存,使用相同的key。

    87620

    Spring boot的缓存使用

    CachePut 有时我们需要手动操作缓存,这样可在方法调用之前put(更新)缓存,这个方法让我们更新缓存,并且执行注释的该方法,Spring执行注释方法,并将其结果放入缓存中(根据@CachePut...它与@Cacheable支持相同的选项,应该用于缓存填充,而不是方法流优化。 请注意,通常不鼓励对同一法使用@CachePut和@Cacheable注释,因为它们具有不同的行为。...@CacheEvict 当我们需要从缓存删除先前加载的主数据时可以使用它,CacheEvict注释方法将被执行时,它将清除缓存。...@Caching 同时需要CachePut和CacheEvict时,使用这个注释。 Spring启动提供与以下缓存提供程序的集成。...e.printStackTrace(); } return new Student(id,"Sajal" ,"V"); } } 服务层方法注释

    95110

    Spring 中的 18 个注解,你会几个?

    从结果就能看出,用在方法参数中的 @ModelAttribute 注解,实际上是一种接受参数并且自动放入 Model 对象中,便于使用。 ? @Cacheable 用来标记缓存查询。...比如 @Cacheable(value="UserCache") 标识的是调用了标记了这个注解的方法时,逻辑默认加上从缓存中获取结果的逻辑,如果缓存中没有数据,则执行用户编写查询逻辑,查询成功之后,同时将结果放入缓存中...也就是 Spring 容器启动时就执行,多用于一些全局配置、数据字典之类的加载。 @PostConstruct 修饰的方法会在服务器加载 Servlet 的时候运行,并且只会被服务器执行一次。...@PreDestroy @PreDestroy 修饰的方法会在服务器卸载 Servlet 的时候运行,并且只会被服务器调用一次,类似于 Servlet 的 destroy() 方法。... @PreDestroy 修饰的方法会在 destroy() 方法之后运行,在 Servlet 彻底卸载之前 ? @Repository 用于标注数据访问组件,即 DAO 组件 ?

    36930

    16个Spring注解,你知道的有几个?

    @Cacheable 用来标记缓存查询。可用用于方法或者类中,标记在一个方法上时表示该方法是支持缓存的,标记在一个类上时则表示该类所有的方法都是支持缓存的。...参数列表 比如@Cacheable(value="UserCache") 标识的是调用了标记了这个注解的方法时,逻辑默认加上从缓存中获取结果的逻辑,如果缓存中没有数据,则执行用户编写查询逻辑,查询成功之后...@CacheEvict 用来标记要清空缓存的方法,这个方法调用后,即会清空缓存。...@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet彻底卸载之前 @Repository 用于标注数据访问组件,即DAO组件 @Component 泛指组件,组件不好归类的时候...@SessionAttributes 默认情况下Spring MVC将模型中的数据存储到request域中。一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。

    40100

    16个Spring注解,你知道的有几个?

    从结果就能看出,用在方法参数中的@ModelAttribute注解,实际上是一种接受参数并且自动放入Model对象中,便于使用。 @Cacheable 用来标记缓存查询。...比如@Cacheable(value="UserCache") 标识的是调用了标记了这个注解的方法时,逻辑默认加上从缓存中获取结果的逻辑,如果缓存中没有数据,则执行用户编写查询逻辑,查询成功之后,同时将结果放入缓存中...@CacheEvict 用来标记要清空缓存的方法,这个方法调用后,即会清空缓存。@CacheEvict(value=”UserCache”) 参数列表 ?...PreDestroy @PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。...@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet彻底卸载之前 @Repository 用于标注数据访问组件,即DAO组件 @Component 泛指组件,组件不好归类的时候

    53940

    springboot cache 基本使用

    比如一个复杂的计算结果,一次数据库访问取得的数据等耗时耗资源的数据就能放入缓存,目的就是为了节省开销,我们要用有限的资源(CPU,内存,带宽等等)尽量做最多的事情。...Springboot中会自动加载一个CacheManager(它有默认的实现类),所以只要写好一个自定义的Cache即可(如果想用系统定义好的或者第三如RedisCache也行,记得向Spring注册这个...CacheManager是怎样做关联的,其实是Spring扫包实现的 凡是继承了Cache接口的类,都会被自动注入进CacheManager中,最终存储于CacheManager的实现类中 接着会生成@...条件结果为TRUE时,就不会缓存。...有则不进入方法,没有则继续进入方法缓存数据。 @CachePut,此注解的方法会直接进入,将更新后数据放入cacheNames的缓存。

    55130

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

    ()>2”) 实例 @Cacheable(value=”accountCache”),这个注释的意思是,调用这个方法的时候,会从一个名叫 accountCache 的缓存中查询,如果没有,则执行实际的方法...(即查询数据库),并将执行的结果存入缓存中,否则返回缓存中的对象。...,这个注释可以确保方法被执行,同时方法的返回值也记录到缓存中,实现缓存与数据库的同步更新。...Spring Cache提供了一些供我们使用的SpEL上下文数据,下表直接摘自Spring官方文档: 名称 位置 描述 示例 methodName root对象 当前调用的方法名 root.methodName...root.targetClass args root对象 当前调用的方法的参数列表 root.args[0] caches root对象 当前方法调用使用的缓存列表(如@Cacheable(value

    3.9K20

    重学SpringBoot系列之Spring cache详解

    比如资讯网站首页的文章列表、电商网站首页的商品列表、微博等社交媒体热搜的文章等等,大量的用户都去请求同样的接口,同样的数据,如果每次都去查数据库,那对数据库来说是一个不可承受的压力。...---- 入口:基于AOP的拦截器 那我们实际调用方法的时候,是怎么处理的呢?我们知道,使用了AOP的Bean,会生成一个代理对象,实际调用的时候,会执行这个代理对象的一系列的Interceptor。...所以我们再回过头去看Cacheable中sync属性上方的注释,它写到:使用sync为true,会有这些限制: 不支持unless,这个从代码可以看到,只支持了condition,没有支持unless...Spring4.3为@Cacheable注解提供了一个新的参数“sync”(boolean类型,缺省为false),设置它为true时,只有一个线程的请求会去到数据库,其他线程都会等待直到缓存可用。...但使用缓存通常会存在缓存中的数据数据库中不一致的问题,尤其是调用第三接口,你不会知道它什么时候更新了数据

    1.4K11

    谈谈个人网站的建立(八)—— 缓存的使用

    在同一个SqlSession中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。执行SQL时两次查询中间发生了增删改操作,则SqlSession的缓存清空。...(3)会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。 ?...3.1 Spring Cache Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如EHCache 或者 OSCache...第一种,由于使用了第三的插件PageHelper,分页获取的话会比较麻烦,同时整页缓存对内存压力也蛮大的,毕竟服务器只有2g。第二条实现方式简单,缺陷是依旧需要查询数据库,想了想还是放弃了。...缓存的初衷是对请求频繁又不易变的数据实际使用中很少会反复的请求同一页的数据(查询条件也相同),当然对数据中某些字段做缓存还是有必要的。 四、如何解决脏读?

    1.5K60

    本地缓存无冕之王Caffeine Cache

    缺点:不能体现数据的访问频率,如果数据最近访问过,即使访问频度低也不会被淘汰。...缓存满了需要淘汰某些对象时,LFU算法会优先淘汰那些访问次数最少的对象。优点:LFU能够较好地处理长期访问稳定、频率较高的情况,因为这样可以确保频繁访问的对象不容易淘汰。...写入外部存储CacheWriter 方法可以将缓存中所有的数据写入到第三,避免数据在服务重启的时候丢失。...recordStats:启用缓存的统计数据,比如命中率等。removalListener:设置缓存淘汰监听器。缓存中的某个条目移除时会被调用。可以用来记录日志、触发某个操作。...注解使用方式注解使用方式,相关的常用注解包括:@Cacheable:表示该方法支持缓存。调用注解的方法时,如果对应的键已经存在缓存,则不再执行方法体,而从缓存中直接返回。

    59730

    本地缓存无冕之王Caffeine Cache

    缺点:不能体现数据的访问频率,如果数据最近访问过,即使访问频度低也不会被淘汰。...缓存满了需要淘汰某些对象时,LFU算法会优先淘汰那些访问次数最少的对象。 优点:LFU能够较好地处理长期访问稳定、频率较高的情况,因为这样可以确保频繁访问的对象不容易淘汰。...写入外部存储 CacheWriter 方法可以将缓存中所有的数据写入到第三,避免数据在服务重启的时候丢失。...recordStats:启用缓存的统计数据,比如命中率等。 removalListener:设置缓存淘汰监听器。缓存中的某个条目移除时会被调用。可以用来记录日志、触发某个操作。...注解使用方式 注解使用方式,相关的常用注解包括: @Cacheable:表示该方法支持缓存。调用注解的方法时,如果对应的键已经存在缓存,则不再执行方法体,而从缓存中直接返回。

    1.7K31

    不会还有人不懂Stream源码吧?10年架构师带你一次性搞懂

    SCS的目标是建立一套统一的基于注解的消息发送机制,屏蔽开发人员直接与底层消息系统进行细节交互,而Messaging模块正是Spring框架中用来做统一消息编程模型的,在Messaging中最关键的数据结构是...BindableProxyFactory可以说是SCS实现通道接口类声明及相关类型的核心类,代码如下: afterPropertiesSet方法会处理所有@Input和@Output注解的函数...Spring容器创建该实例时,会调用BindableProxyFactory 的 outputMessagefunction 法 , 由 于BindableProxyFactory实现了Methodlnterceptor...Spring的RabbitMQ使用InternalConsumer作为默认的消息消费接收到对应消息后,会调用handleDelivery方法将RabbitMQ消息发送给BlockingQueueConsumer...postProcessAfterlnitialization是在Bean实例初始化之后调用 的 法 , 它 会 遍 历 Bean 实 例 中 的 所 有 函 数 , 处 理 那 些 @StreamListener

    73120
    领券