首页 文章

使用@EnableCaching的Spring Boot默认缓存管理器

提问于
浏览
5

我在SpringBootApplication中实现了缓存,如下所示

@SpringBootApplication
@EnableCaching
public class SampleApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SampleApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(SampleApplication.class, args);
    }

这绝对是正常的 .

但是要实现缓存,应该定义一个必需的CacheManager / Cacheprovider . 没有定义任何cacheManager也我的应用程序工作正常 .

是否有Spring定义的默认缓存管理器? Spring文档说Spring Boot自动配置一个合适的CacheManager .

那么如果我们不定义CacheManager会使用什么呢?

2 回答

  • 4

    Spring Boot启动程序提供a simple cache provider,它将值存储在ConcurrentHashMap的实例中 . 这是缓存机制最简单的线程安全实现 .

    如果您的应用程序中存在 @EnableCaching 注释,则Spring Boot会检查类路径上可用的依赖项并配置相应的 CacheManager . 根据所选的提供商,可能需要一些其他配置 . 您可以在此答案的第一个链接中找到有关配置的所有信息 .

  • 0

    如果您想明确地(从任何原因)定义最简单的缓存管理器(在引擎盖下使用ConcurrentHashMap),请执行以下操作:

    @Bean
    public CacheManager cacheManager() {
        return new org.springframework.cache.concurrent.ConcurrentMapCacheManager();
    }
    

相关问题