我有2个属性文件:


application.yml
bootstrap.yml


我已经为我的应用程序嵌入了jar文件,并使用以下命令启动它:java -jar 'jar file path'
我需要使用外部位置的文件覆盖属性文件。

尝试:-Dspring.config.location=your/config/dir/参数,但是不起作用。

请问我如何使用几个属性文件覆盖属性的正确方法?

我的bootstrap.yml看起来像:

spring:
  application.name: app_name
  profiles:
    active: local
    include:
  cloud.consul.enabled: false
  main:
    web-application-type: none

---
spring:
  profiles: withconsul
  cloud:
    config.allow-override: true
    consul:
      enabled: true
      host: https://consul.evoil.ru
      port: 443
      config:
        enabled: true
        format: YAML
        fail-fast: true


我应该重命名有关现有配置文件的属性文件吗?

最佳答案

除了spring.config.location之外,您还需要使用spring.config.name。

java -jar 'jar file path' --spring.config.name=external-prop-file-name --spring.config.location=your/config/dir/


请参见https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-application-property-files

更新:

如果要应用两个外部文件的属性(但bootstrap.yml中的属性优先于application.yml中的属性),则需要将bootstrap.yml文件重命名为application-bootstrap.yml并启动使用引导程序配置文件的应用程序:

java -jar 'jar file path' --spring.profiles.active=bootstrap --spring.config.location=your/config/dir/


在此示例中,我省略了--spring.config.name参数,因为其默认值为application(https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#core-properties)。

更新2:

如果withconsul配置文件已在application.yml文件中被激活,并且您不想添加新的配置文件,则可以将bootstrap.yml文件重命名为application-withconsul.yml。

10-05 22:47
查看更多