当前位置: 首页 > 知识库问答 >
问题:

Spring可缓存实现类

干善
2023-03-14

我试图以某种方式“调试”使用spring boot cache注释的应用程序,为此,我想知道如何找到实际实现接口Cacheable、CacheConfig等的类。

我的想法是确认缓存正在被填充、清空等。

共有1个答案

乐正嘉瑞
2023-03-14

@cacheable用于划分可缓存的方法--也就是说,将结果存储到缓存中的方法,因此在随后的调用(使用相同的参数)时,将返回缓存中的值,而不必实际执行该方法。在其最简单的形式中,注释声明需要与带注释的方法关联的缓存的名称:

@Cacheable("books")
public Book findBook(ISBN isbn) {...}

在上面的代码片段中,findBook方法与名为Books的缓存相关联。每次调用该方法时,都会检查缓存,以查看是否已经执行了调用,而不必重复调用。虽然在大多数情况下,只声明一个缓存,但注释允许指定多个名称,以便使用多个缓存。在这种情况下,在执行方法之前将检查每个缓存--如果至少命中了一个缓存,那么将返回关联的值。

欲了解更多信息,请阅读以下内容;

Spring使用ConcurrentHashMap作为默认缓存实现。

public class ConcurrentMapCache extends AbstractValueAdaptingCache

另一方面,如果您需要不同的缓存,那么Spring还附带了一个内置的ehcache包装器。好消息是Spring缓存实现之间的交换很容易。理论上,这都是配置的问题。

 类似资料:
  • 我正在使用注释来缓存我的方法的结果。出于性能原因,我想缓存从方法返回的和非null值。 但是这里的问题是Spring缓存非空值,但由于某种原因没有缓存空值。 这是我的密码: 我什么都试过了。就连我 但这也没什么帮助。有关于这个的指示吗?

  • 本文向大家介绍集成Spring Redis缓存的实现,包括了集成Spring Redis缓存的实现的使用技巧和注意事项,需要的朋友参考一下 这里的缓存主要是用于 Service 层的,所以下面的配置,都是针对 service 模块的。 本文来自内部分享,对特殊信息进行了简单处理。 本文都是在以缓存来讲 Redis 的使用,实际上 Redis 不仅仅用于缓存,本身还是 NoSQL 数据库,大家可以自

  • 1)我想从缓存中获得数据,如果缓存中没有数据,那么应该从数据库中获取数据。 2)如果我点击/api/cacherefresh,控制器将刷新所有表。

  • 我有一个带有guice但没有spring的应用程序。我有: 我有两个实现: 我希望能够将缓存服务注入所有其他服务,并且希望在缓存服务中注入正常服务。问题是,当我想在其他类中注入服务接口时,实现是随机选择的。有没有办法解决这个问题?

  • 我想将主数据缓存到Redis。 所以,我写了这些代码。 和 和ymlfile 但是,缓存不工作... 无论何时调用printTest方法,都将执行“getTest”方法。Redis没有数据。。。我的代码中有什么问题? SpringBoot版本是1.4.0 依赖关系是

  • 我在Spring3.1中使用@Cacheable。我对Cacheable中的值和键映射参数有点混淆。以下是我正在做的: 这里发生的情况是,第二个方法依赖于第一个方法的选定值,但问题是假设当我传递zoneMastNo=1和areaMastNo=1时,第二个方法返回第一个方法结果。事实上,我有很多服务,因此,我希望使用公共值来缓存特定的用例。现在我的问题是: 我如何解决这个问题 对每个服务都使用cac