外部化 application.properties 内的值(例如 server.port、spring.datasource.url 等)

Externalizing values inside application.properties (ex. server.port, spring.datasource.url, and etc.)

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

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

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

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

Spring.io Externalized Configuration

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 启动将查看 application.properties 文件 外部 并考虑其中的任何值并使用它们 代替 jar application.properties 文件 内部 中的任何值。

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

您也可以考虑转向 Spring Cloud Config 实施,但这需要更多工作。