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(除非另有说明)。 我们还提供广泛的配置选项支持:只需获取 Spring Boot 1.3.M1 并在 IDE 中键入 spring.cache 即可列出可用的选项。

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

如果您使用的是执行器,如果底层缓存提供程序支持,默认情况下也会公开缓存指标。 目前,我们为每个缓存公开大小、缓存比率和未命中比率。 我们期待您的反馈来改进该列表。

非常感谢社区的帮助,特别是 Eddú Meléndez Gonzales,他贡献了许多 PR! 文档也已更新,请试一试,让我们知道您的想法。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

取得领先

VMware 提供培训和认证来加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

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

查看全部