Внешние значения внутри application.properties (например, server.port, spring.datasource.url и т. Д.)

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

Я хочу экстернализовать все "?" значения вне application.properties, и иметь их в текстовом файле или что-то в этом роде.

У меня уже есть файл configuration.txt, содержащий другие значения, используемые в службах, но я просто не знаю, как он работает для application.properties.

Решено, просто поместите файл свойств по тому же пути, что и файл jar, тогда весенняя загрузка заменит значения для вас.

1 ответ

Решение

Внешняя конфигурация 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 будет смотреть на файл application.properties за пределами вашего jar- файла и рассматривать любые значения в нем и использовать их вместо любых значений в файле application.properties внутри вашего jar.

Итак, где бы вы ни находились, поместите файл application.properties, который вам нужен для этой среды. См. Ссылку для получения дополнительных сведений о том, насколько это можно настроить (профили, YAML, системные свойства, переменные среды и т. Д.)

Вы также можете подумать о переходе на реализацию Spring Cloud Config, но это немного больше работы.

Другие вопросы по тегам