【问题标题】:Create Externalized Configuration in spring-boot along with profiles在 spring-boot 中创建外部化配置以及配置文件
【发布时间】:2016-04-17 04:37:10
【问题描述】:

我有一个带有注释而不是 context.xml 的 spring-boot 应用程序。

在我的 src/main/resources 文件夹中,我有:application-dev.propertiesapplication-test.properties

完美适用于不同的配置文件(使用-Dspring.profiles.active=dev 等 VM 选项运行时)

现在我需要使用/opt/software/Tomcat8/conf/app.properties 中的文件将这些属性外部化

有些道具会相互覆盖,有些则不会。

在 Tomcat 配置 context.xml 中我说:

<Environment name="app.properties"
    value="file:///opt/software/Tomcat8/conf/app.properties"
    type="java.lang.String" override="false"/>

如何在我的应用程序中通过 JNDI 使用它,在 Spring-bot 应用程序类中配置没有 XML 但注释的应用程序?

我需要它优先于内部 jar 属性根据 Link to Spring-boot.doc

【问题讨论】:

  • 将JNDI中的属性重命名为SPRING_CONFIG_LOCATIONspring.config.location
  • 谢谢!但不幸的是它对我不起作用......属性现在存在于上下文环境中,但外部文件道具不优于内部 jar 道具。
  • 向我们展示您配置的相关部分
  • 可能是(根据 [link]docs.spring.io/spring-boot/docs/current/reference/html/…)硬命名的 props 文件的优先级低于特定于配置文件的内部 props。因此,现在我正在尝试编写我的 SPRING_CONFIG_LOCATION 属性的值,例如 application-${profile}.properties 以实现上述文档中的第 7 行..
  • ЕЕЕ!明白了!如果 spring_config_loaction 不是文件而是目录,并且 propsFile 名称是“application-dev.properties”,并且配置文件是“dev” Spring 处理来自外部文件的 props!谢谢大家!

标签: spring-boot config app-config spring-annotations


【解决方案1】:

我发现的一个解决方案是在执行应用程序时将 vm 参数 -Dloader.path 与外部路径一起使用。请记住,如果您使用的是胖罐子,您可能需要在 Zip 模型中创建包,否则它将无法工作。

【讨论】:

    猜你喜欢
    • 2015-10-27
    • 2019-08-17
    • 2016-08-19
    • 2021-01-05
    • 2017-11-24
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多