Spring Boot 1.3 中的缓存自动配置

工程 | Stéphane Nicoll | 2015 年 6 月 15 日 | ...

在过去的一年里,我们显著改进了缓存抽象,支持 JSR-107 (JCache) 注解更好的声明式模型来共享或外化通用设置。在 Spring Boot 1.3 中,我们现在为它提供了全面的自动配置。

简而言之,缓存抽象将缓存应用于方法,从而根据缓存中的可用信息减少执行次数。缓存逻辑是透明应用的:只有当指定的 ISBN 不存在于 books 缓存中时,下方的方法才会被调用。当调用该方法来获取缺失的 Book 时,缓存将透明地更新,以便后续调用不再重复调用该方法。

@Cacheable("books")
public Book findBook(ISBN isbn) {...}

要实际启用这些注解的处理,基本的设置需要设置 @EnableCaching 并定义一个 CacheManager bean。

@SpringBootApplication
@EnableCaching
public class MyApp {
    @Bean
    public CacheManager cacheManager() { ...}

    ...
}

我们希望尽量减少最后这个步骤,这样您只需要在您的 Spring Boot 应用中添加 @EnableCaching 即可。从 Spring Boot 1.3.M1 开始,这已经成为现实!Spring Boot 为任何符合 JSR-107 的提供商提供自动配置,同时也为 EhCache、Hazelcast、Infinispan、Redis 和 Guava 提供自动配置。如果以上都没有提供,我们还使用 ConcurrentHashMap 提供非常基本的支持。

Spring Boot 会检查您的项目以推断正确的默认值;例如,如果您在类路径的根目录有一个 ehcache.xml 文件并且 EhCache 2.x 存在,那么我们将使用该配置文件自动创建一个 EhCacheCacheManager(除非另有指定)。我们还提供了广泛的配置选项支持:只需在您的 IDE 中输入 spring.cache,即可列出可用选项。

如果底层提供商支持,Spring Boot 可以在启动时创建缓存。如果您正在使用 JCache,它还可以为您提供 javax.cache.CacheManager 的回调,以防您想在启动时对其进行自定义(例如,进一步调整配置)。

如果您正在使用 actuator,缓存指标也会默认公开(前提是底层缓存提供商支持)。目前,我们为每个缓存公开其大小、命中率和未命中率。我们期待您的反馈来改进这个列表。

非常感谢社区的帮助,特别是 Eddú Meléndez Gonzales 贡献了许多 PR!文档 也已更新,请尝试使用并告诉我们您的想法。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有