Spring引导外部属性不起作用

时间:2018-04-23 17:46:49

标签: spring-boot

enter image description here

我的项目结构看起来像附件。即使我有配置文件特定的属性,我想用外部属性文件运行我的应用程序,即在jar文件之外。

我尝试了以下命令:

java -jar test_service.jar --spring.config.location=file:///C:/external_props/test.properties

但它正在接受application-default.properties文件。

来自日志文件:

No active profile set, falling back to default profiles: default

为什么不采取外部属性文件?

2 个答案:

答案 0 :(得分:1)

当您传递--spring.config.location命令行参数时,SpringBoot不会考虑src / main / resources目录中的application-*.properties文件。您提到的--spring.config.location的文件名将作为基本文件名,在您的案例test中。因此,它只会从您作为test.properties个人资料提供的路径中加载default个文件。

如果您要启用某个个人资料,例如prod,则需要使用C:/external_props/application-prod.properties创建文件prod并启用--spring.profiles.active=prod个人资料。

答案 1 :(得分:0)

Spring会自动在特定位置查找某个属性文件。

从执行jar文件的位置,Spring将在该目录中查找名为application.properties的属性文件

另一种方法是将config目录放在执行jar的目录中,并将应用程序属性放在那里。

还有一个选项,即-Dspring.profiles.active={profiles}参数。

然后,Spring将在目录或config目录中查找application- {profile} .properties

参考: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

另外我认为你使用了 --spring.config.location=file:///C:/external_props/test.properties
未正确用于基于Windows的文件路径。 Windows使用\而不是/.