Spring Boot 中的二级缓存究竟需要哪些依赖项?

What dependencies do I exactly need for second level caching in Spring Boot?

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

    <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

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

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

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