spring-boot-starter-cache 是 Spring Boot 提供的一个用于简化缓存管理的 Starter 依赖。它本身并不实现任何特定的缓存框架,而是作为一个抽象层,允许你在不同的缓存技术之间轻松切换。这意味着你可以选择不同的后端缓存技术,并且 Spring Boot 会为你自动配置相应的缓存管理器。

spring-boot-starter-cache 默认支持以下几种缓存技术:

  • NoOpCacheManager:这是 Spring 的一个空实现,当没有其他缓存管理器可用时,默认会使用这个实现。
  • ConcurrentMapCacheManager:这是一个简单的基于内存的缓存实现,使用了 java.util.concurrent.ConcurrentHashMap。这对于开发阶段或者不需要分布式缓存的小型项目来说是一个很好的选择。
  • Caffeine:一个高性能的基于 Java 的本地缓存库,它可以作为内存中的缓存使用,并且提供了许多高级特性,比如自动过期和最大条目限制等。
  • Ehcache 3.x:这是一个功能丰富的分布式缓存解决方案,支持本地缓存、网络分区以及集群模式。
  • Hazelcast:一个分布式的内存数据网格,适用于需要高并发读写操作的场景。
  • Redis:一个广泛使用的内存数据结构存储,可以用作数据库、缓存和消息中间件。

要启用特定的缓存技术,你需要在你的项目中引入相应的 Starter 依赖。例如,如果你想使用 Redis 作为缓存后端,你需要添加 spring-boot-starter-data-redis 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

一旦添加了这些依赖,Spring Boot 会自动配置合适的缓存管理器。你可以在 application.propertiesapplication.yml 文件中配置缓存的具体参数,例如对于 Redis:

spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379

对于 Caffeine 缓存,你可以这样配置:

spring.cache.type=caffeine
spring.caffeine.cache.ttl=300 # 设置缓存项的过期时间为300秒

你可以通过 spring.cache.type 属性来显式指定缓存类型,但通常情况下,Spring Boot 会根据你添加的依赖自动选择合适的缓存类型。此外,你还可以通过 @EnableCaching 注解来启用缓存,并在方法上使用 @Cacheable@CachePut@CacheEvict 注解来控制缓存的行为。