Spring 从 application.properties 中引导外部化属性
Spring Boot Externalize properties from within application.properties
我想将我的 属性 源位置设置为指向 application.propoerties 本身的外部目录。
我知道按如下方式传递命令行参数就可以了。
java -jar myApp.jar --spring.config.location=/Users/tony/Desktop/override.properties
但我想从应用程序本身内部设置此路径,而不是传递命令行参数。我尝试将 spring.config.location=/Users/tony/Desktop/override.properties
添加到我的 application.properties 但它不起作用。
我该怎么做?
您可以尝试将以下注释添加到调用 SpringApplication.run()
的主 class 中:
@PropertySource("/Users/tony/Desktop/override.properties")
在 运行 启动 Spring 启动应用程序时,它应该从那里获取属性。使用 build
- resources
- resource
- excludes
- exclude
in pom.xml 将 application.properties
从 src/main/resources
中排除帮助确保打包的 jar 不包含 applcation.properties 并且会强制 Spring Boot 从 @PropertySource
中指定的路径中获取它
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/application.properties</exclude>
</excludes>
</resource>
</resources>
</build>
但请记住,通过这种方式,您将创建属性文件与应用程序的紧密耦合。如果您将它保留为 运行 时间参数,它将具有足够的灵活性以 运行 其他地方并且维护也会更容易。
spring.config.location
和 spring.config.additional-location
仅在设置为环境变量、系统 属性 或命令行参数时有用。
要在 application.properties
文件中指定要直接加载的其他配置文件,最好的方法是像这样设置 spring.config.import
属性:
spring.config.import=file:/Users/tony/Desktop/override.properties
我想将我的 属性 源位置设置为指向 application.propoerties 本身的外部目录。 我知道按如下方式传递命令行参数就可以了。
java -jar myApp.jar --spring.config.location=/Users/tony/Desktop/override.properties
但我想从应用程序本身内部设置此路径,而不是传递命令行参数。我尝试将 spring.config.location=/Users/tony/Desktop/override.properties
添加到我的 application.properties 但它不起作用。
我该怎么做?
您可以尝试将以下注释添加到调用 SpringApplication.run()
的主 class 中:
@PropertySource("/Users/tony/Desktop/override.properties")
在 运行 启动 Spring 启动应用程序时,它应该从那里获取属性。使用 build
- resources
- resource
- excludes
- exclude
in pom.xml 将 application.properties
从 src/main/resources
中排除帮助确保打包的 jar 不包含 applcation.properties 并且会强制 Spring Boot 从 @PropertySource
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/application.properties</exclude>
</excludes>
</resource>
</resources>
</build>
但请记住,通过这种方式,您将创建属性文件与应用程序的紧密耦合。如果您将它保留为 运行 时间参数,它将具有足够的灵活性以 运行 其他地方并且维护也会更容易。
spring.config.location
和 spring.config.additional-location
仅在设置为环境变量、系统 属性 或命令行参数时有用。
要在 application.properties
文件中指定要直接加载的其他配置文件,最好的方法是像这样设置 spring.config.import
属性:
spring.config.import=file:/Users/tony/Desktop/override.properties