【问题标题】:Don't work spring.config.additional-location不工作 spring.config.additional-location
【发布时间】:2019-05-12 18:35:23
【问题描述】:

行家:

<profiles>
    <profile>
        <id>local</id>
        <activation>
           <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <active.spring.profile>local</active.spring.profile>
        </properties>
    </profile>
</profiles>

application.properties:

spring.profiles.active=@active.spring.profile@
spring.config.additional-location=classpath:/profile/application-${spring.profiles.active}.properties

在此之后,我无法从包含 test.prop=123 的 src/main/resources/application-local.properties 中获取价值

@Service
public class TestProps {

    @Value("${test.prop}")
    String testProp;

    @PostConstruct
    void run() {
        System.out.println(testProp);
    }
}

错在哪里?或者这是一个错误?

【问题讨论】:

  • (1) 您的链接已损坏,(2) 正是为了避免将来出现此类风险,我们要求问题具有最小但完整的代码示例,这将使我们能够在问题本身中重现问题而不是链接。请参阅minimal reproducible example
  • 网址是固定的

标签: java maven spring-boot


【解决方案1】:

additional-location 确实不属于 application.properties,因为 Spring 不会从那里解释它。它需要在默认配置文件之前加载其他配置文件。 另一方面,在 maven spring boot 插件中设置默认的附加位置很方便。这样一来,就可以在项目源之外设置安全敏感信息,并且不会出现在源存储库中。例如,客户端安全配置可以读取:

app:
  client:
    ssl: 
      keystore: path/to/keystore
      keystore-password: the-keystore-password
      key-password: the-key-password
 

可以跳过 src/main/resources 中的默认 application.yml,而额外的配置可以提供每个活动配置文件的值并确保它们在本地计算机上的安全。

【讨论】:

    【解决方案2】:

    属性:spring.config.additional-location 必须作为 JVM 的参数提供,如下所示:java -Dspring.config.additional-location=classpath:/profile/application-local.properties -jar whatever.jar

    将它放在application.properties 中没有意义。来自documentation

    或者,当使用配置自定义配置位置时 spring.config.additional-location,除了 默认位置。 在 默认位置

    由于在默认位置之前搜索了其他位置,因此必须更早地提供它们,因此您不能在application.properties中拥有它们

    【讨论】:

    • 谢谢。我使用 -Dspring.config.additional-location 传递它,这根本不起作用。 (但通过 IntelliJ 运行配置中的 VM 选项工作)
    • @petronius 最可能是你在 WORNG 的地方传递了 - 它必须在 -jar 开关之前,否则它将最终作为 main 方法的 arg 而不是 env 变量。
    • 天哪,这行得通。尽管我阅读了文档,但我犯了完全相同的错误-.-
    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多