1
server.port = ?
spring.datasource.url = ?
spring.datasource.username = ?
spring.datasource.password = ?

我想外化所有的“?” application.properties 之外的值,并将它们保存在文本文件或其他文件中。

我已经有一个 configuration.txt 文件,其中包含在服务中使用的其他值,但我只是不知道它如何用于 application.properties。

已解决,只需将属性文件放在jar文件所在的相同路径中,然后spring boot将为您替换值。

4

1 回答 1

0

Spring.io 外部化配置

Spring Boot uses a very particular PropertySource order that is designed to allow sensible overriding of values. Properties are considered in the following order:

Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).
@TestPropertySource annotations on your tests.
properties attribute on your tests. Available on @SpringBootTest and the test annotations for testing a particular slice of your application.
Command line arguments.
Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property).
ServletConfig init parameters.
ServletContext init parameters.
JNDI attributes from java:comp/env.
Java System properties (System.getProperties()).
OS environment variables.
A RandomValuePropertySource that has properties only in random.*.
Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants).
Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants).
Application properties outside of your packaged jar (application.properties and YAML variants).
Application properties packaged inside your jar (application.properties and YAML variants).

这意味着您想要做的事情得到支持,而无需在 application.properties 文件中做任何花哨的事情。

Spring Boot 将查看jar外部的 application.properties 文件并考虑其中的任何值并使用它们而不是jar内部的 application.properties 文件中的任何值。

因此,无论您的 jar 在哪里,都可以为该环境放置所需的 application.properties 文件。有关可以自定义多少(配置文件、YAML、系统属性、环境变量等)的更多详细信息,请参阅链接

您可能还考虑迁移到 Spring Cloud Config 实现,但这需要更多的工作。

于 2019-09-20T14:38:58.213 回答