Spring Boot - 如何在开发期间禁用@Cachable?

问题描述 投票:15回答:2

我正在寻找两件事:

  1. 如何使用Spring启动“dev”配置文件禁用开发期间的所有缓存。在application.properties中,没有seam作为一般设置来关闭它。什么是最简单的方法?
  2. 如何禁用特定方法的缓存?我试着像这样使用SpEl: @Cacheable(value = "complex-calc", condition = "#{${spring.profiles.active} != 'dev'}") public String someBigCalculation(String input){ ... }

但我可以让它发挥作用。关于SO的问题有几个问题,但它们指的是XML配置或其他东西,但我使用的是Spring Boot 1.3.3,它使用了自动配置。

我不想让事情过于复杂。

java spring spring-boot spring-el spring-cache
2个回答
38
投票

默认情况下会自动检测和配置缓存类型。但是,您可以通过将spring.cache.type添加到配置中来指定要使用的缓存类型。要禁用它,请将值设置为NONE

正如你想为特定的配置文件做的那样,将它添加到该配置文件application.properties,在这种情况下修改application-dev.properties并添加

spring.cache.type=NONE

这将禁用缓存。


3
投票

对于你的第二个问题,做这样的事情:

编写一个方法来确定特定的配置文件是否处于活动状态(环境是您注入的环境)

boolean isProfileActive(String profile) { 
   return Arrays.asList(environment.getActiveProfiles()).contains(profile);
}

然后在可缓存注释中使用它作为你的spel条件

© www.soinside.com 2019 - 2024. All rights reserved.