【问题标题】:What dependencies do I exactly need for second level caching in Spring Boot?Spring Boot 中的二级缓存究竟需要哪些依赖项?
【发布时间】:2021-10-28 17:36:39
【问题描述】:

我读过几篇文章。 一 - 表示需要这些依赖项:

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>javax.cache</groupId>
    <artifactId>cache-api</artifactId>
</dependency>
<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.7.1</version>
</dependency>

另一个只有这个:

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.2.2.Final</version>
问题是,为什么在第一个示例中我需要一个用于缓存的 API? hibernate没有自己的吗?为什么在第二个示例中不需要 spring-boot-starter-cache ?

这是我指的两篇文章。

First example

Second one

【问题讨论】:

  • 在您链接的第一个示例中,缓存用于缓存服务bean 生成的结果。在您链接的第二个示例中,缓存用于缓存数据库结果。这些是不同的用例。

标签: java spring caching


【解决方案1】:

这两个教程都展示了不同的缓存方法。

  1. 首先是在 Spring 级别实现缓存。通过这样做,您可以在 Spring 应用程序中的某些特定方法或对其他 API 的调用上实现缓存。这就是为什么你需要 spring-boot-starter-cachecache-api - spring-boot-starter-cache 因为它与 Spring 一起使用,cache-api 因为你的缓存不会使用休眠 api。
  2. 其次是在休眠级别实现缓存。在这里,您的缓存将在调用 DB 期间使用 - 您不能将其用于缓存某些方法、调用其他 API 等等。这就是您不需要 spring-boot-starter-cache 的原因 - 您的代码根本不会使用这些。

如果您只想缓存对 DB 的调用,请使用第二种方法。如果您尝试缓存可以(但不需要)使用 DB 的方法的执行,请使用第一种方法。

【讨论】:

    猜你喜欢
    • 2012-04-02
    • 2017-01-23
    • 2018-09-20
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2019-09-17
    相关资源
    最近更新 更多