如何在Spring Boot中外部化资源文件的方法
我想解决的是标题中提到的问题。在spring-boot中,通常会将DB连接信息等配置写在src / main / resources目录下的application.properties文件中,但我想将此文件放置在外部,并介绍一种在编译时和运行时使用不同定义的方法。
之前,我发表了一篇关于使用Maven将资源文件放在JAR文件外部的方法的帖子,现在我来介绍其在spring-boot中的版本。
解决办法 (jiě jué fǎ)
在Spring Boot中,这非常简单。只需将希望放置在外部的资源文件(例如application.properties)放置在另一个文件夹中,并将其指定为运行时的类路径。
换言之,假设要运行my-java-app.jar,并且想要读取external_resource 文件夹下的application.properties文件,则应将external_resource文件夹包含在运行时的类路径中。
my-java-app.jar
external_resource
└ application.properties
java -classpath ./external_resource -jar my-java-app.jar
解释
为什么会出现这种行为呢?原因是因为在Spring Boot中,资源文件的加载优先级如下。
-
- 运行时的类路径
- 编译时的 src/main/resources
实际上,就像其他人所解释的那样,关于加载优先级还有更详细的定义。
-
- spring-boot 公式ドキュメント -Externalized Configuration-
- 公式ドキュメント翻訳:[Qiita] Spring Boot 外部設定値の優先順位
最后
春节-启动器非常方便,能够迅速解决问题,非常感激。还要感谢 @niwasawa 先生提供的官方文档翻译,非常感谢。