领先一步
VMware提供培训和认证,以快速提升您的进步。
了解更多在过去的一年里,我们对缓存抽象进行了显著改进,支持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!文档也已更新,所以请尝试一下并让我们知道你的想法。