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

我正在寻找两件事:

  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,它使用了自动配置。

我不想让事情过于复杂。

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

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

 spring.cache.type=NONE 

这将禁用缓存。

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

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

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

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

如果是SpringBoot项目,请在Application类中注释掉@EnableCaching,例如:

  //@EnableCaching @SpringBootApplication public class CacheapplicationApplication{ public static void main(String[] args){} }