将列表传递到环境变量以从自动配置中排除某些类

时间:2019-05-01 07:44:27

标签: spring spring-boot

在Spring中,您可以通过在spring.autoconfigure.exclude属性中定义某些类来将它们排除在自动配置之外。就我而言,我们使用yaml来定义以排除某些类:

spring:
  autoconfigure:
    exclude: |
      org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration,
      org.springframework.boot.actuate.autoconfigure.MetricRepositoryAutoConfiguration,
      org.springframework.boot.actuate.autoconfigure.MetricsDropwizardAutoConfiguration,
      org.springframework.boot.actuate.autoconfigure.MetricsChannelAutoConfiguration,
      org.springframework.boot.actuate.autoconfigure.MetricExportAutoConfiguration,
      org.springframework.boot.actuate.autoconfigure.PublicMetricsAutoConfiguration

以排除执行器设置。但是,由于这仅需要在某些环境中发生,因此我想外部化此设置并将其作为环境变量传递。 Spring允许您将配置作为SPRING_AUTOCONFIGURE_EXCLUDE形式的环境变量进行传递,但是在这种情况下如何传递列表?我在externalized configuration的Springs文档中找不到任何能给我答案的东西。

1 个答案:

答案 0 :(得分:2)

您可以这样做:

export SPRING_AUTOCONFIGURE_EXCLUDE=org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration,org.springframework.boot.actuate.autoconfigure.MetricRepositoryAutoConfiguration,org.springframework.boot.actuate.autoconfigure.MetricsDropwizardAutoConfiguration,org.springframework.boot.actuate.autoconfigure.MetricsChannelAutoConfiguration,org.springframework.boot.actuate.autoconfigure.MetricExportAutoConfiguration,org.springframework.boot.actuate.autoconfigure.PublicMetricsAutoConfiguration

您必须在一行中添加所有条目,这有点麻烦,但是应该可以。我已经在其中一个具有很多自动配置类的应用程序中尝试过此操作,并且可以通过这样设置环境变量来排除它们。