我有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。