我的项目结构看起来像附件。即使我有配置文件特定的属性,我想用外部属性文件运行我的应用程序,即在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
为什么不采取外部属性文件?
答案 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}
参数。
参考: 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使用\而不是/.