跳到主要内容

缓存抽象

ChatGPT-4o 中英对照 Cache Abstraction

自 3.1 版本起,Spring Framework 提供了对现有 Spring 应用程序透明添加缓存的支持。与事务支持类似,缓存抽象允许在代码影响最小的情况下一致地使用各种缓存解决方案。

在 Spring Framework 4.1 中,缓存抽象得到了显著扩展,支持 JSR-107 注解和更多的自定义选项。

章节摘要

📄️ JCache (JSR-107) 注解

从版本 4.1 开始,Spring 的缓存抽象完全支持 JCache 标准(JSR-107)注解:@CacheResult、@CachePut、@CacheRemove 和 @CacheRemoveAll 以及 @CacheDefaults、@CacheKey 和 @CacheValue 附属注解。即使不将缓存存储迁移到 JSR-107,你也可以使用这些注解。内部实现使用 Spring 的缓存抽象,并提供符合规范的默认 CacheResolver 和 KeyGenerator 实现。换句话说,如果你已经在使用 Spring 的缓存抽象,可以切换到这些标准注解,而无需更改缓存存储(或配置)。

📄️ 插入不同的后端缓存

显然,有很多缓存产品可以用作后备存储。对于那些不支持 JSR-107 的产品,你需要提供一个 CacheManager 和一个 Cache 实现。这听起来可能比实际要难,因为在实践中,这些类往往是简单的适配器,将缓存抽象框架映射到存储 API 之上,就像 Caffeine 类所做的那样。大多数 CacheManager 类可以使用 org.springframework.cache.support 包中的类(例如 AbstractCacheManager,它负责样板代码,只需完成实际的映射即可)。