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

Spring靴子@Cacheble与Ehcache

拓拔富
2023-03-14

我正在使用Spring boot和Ehcache来缓存应用程序中的一些数据。该应用程序是一个 rest 服务,用于缓存一些具有高使用率的数据。

我们的控制器中的代码看起来像:

@Cacheable("CategoryModels")
  @GetMapping("/category/{companyId}")
  public List<CategoryViewModel> getAllCategories(@PathVariable(value = "companyId", required = true) long companyId,
    @RequestHeader("user") String user) {
//custom code here
}

现在,在某些情况下,用户从服务器获取不同的数据集。以上情况有人能解释一下吗?

如果数据库中的数据发生更改,我将刷新缓存,程序将自动将更新的数据更新为

对于刷新缓存,我使用自定义写入方法:

Cache categoryCache = (Cache) manager.getCache("CategoryModels").getNativeCache();
categoryCache.removeAll();
categoryController.getAllCategories(company.getCompanyId(), null);

我对使用和刷新的其他缓存具有相同的行为,这些缓存的使用方式与上述缓存的使用方式相同。

共有2个答案

锺离嘉容
2023-03-14

这可能是几件事。首先,spring提供的默认密钥解析器只考虑参数的名称。解决这个问题的最干净的方法是编写自己的key revolver,它同时考虑类和方法,如果没有它,就有可能从一个完全不同的方法中获取数据,该方法恰好共享同一个参数列表。

纪秋月
2023-03-14

您应该尝试使用以下参数化缓存定义:

@Cacheable(value="CategoryModels", key="{ #root.methodName, #companyId, #user.id }")
 类似资料:
  • 有一个简单的代理: 预过滤器: 和属性: 总的来说,一切正常。 但是代理发送的网页具有以下链接 必须采用如下形式: 如何配置服务器以发送正确的链接? 案例: 1.直接从Internet访问myserver时,例如: 服务器发送带有如下链接的页面: 2.从Internet访问代理时,如: 代理服务器发送带有以下链接的页面:

  • 我正在用Thymeleaf构建一个Spring Boot应用程序。我的模板(视图)和静态文件夹都在src/main/Resources/静态和src/main/Resources/tem板下。当我通过main方法(使用eclipse)运行应用程序时,一切都很好。但是,我已经按照说明创建了一个war文件,当我将其部署到Tomcat 7时——静态内容丢失了,只显示了Thymeleaf html模板。

  • 我使用的是Spring-BootV1.1.10.Release,用于基于spring的web应用程序。我的数据库是Postgres&用于我的数据库迁移的Flyway。 postgres sql脚本文件由flyway-maven-plugin通过以下maven命令成功执行,即mvn compile flyway:migrate 但是同一个Postgres sql脚本文件抛出了psqlexceptio

  • 作为一个新的Web应用程序项目的一部分,我计划学习Spring。我开始通读Spring框架参考。当我在谷歌上搜索时,我遇到了Spring boot。我所理解的是,Spring boot通过减少配置帮助构建应用程序的速度比Spring快得多。现在我有点困惑,我应该继续学习Spring还是跳转到Spring boot。我的目的是了解Spring作为一个框架是如何工作的,而不是一些特性。所以请让我知道,

  • 我使用带有spring boot的jersey,我有一个异常映射器: 同样注册,并使用调试,我可以看到这个映射器被正确调用,但是无论使用junit测试还是手动测试,最终响应仍然返回404。 以下是测试: 然后在泽西岛配置中注册:

  • 我正在使用Spring boot 2.0.2应用程序通过HTTPS对外部api进行REST api调用。 我是TLS和SSL的新手。我的理解是,TLS是一种更安全的方式,用于传输安全的敏感数据。 我的问题是: 如何确定我的应用程序使用的TLS版本