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的回调,以防你想要在启动时自定义它(例如,进一步调整配置)。

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

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

获取Spring通讯

通过Spring通讯保持联系

订阅

领先一步

VMware提供培训和认证,以快速提升您的进步。

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看全部