Как переопределить свойства библиотеки Spring Boot? - PullRequest
0 голосов
/ 30 мая 2019

Я хотел бы переопределить свойства библиотеки, которые я написал в проекте, который его использует. Я использую это руководство Spring для создания библиотеки: https://spring.io/guides/gs/multi-module/

Я хотел бы знать, как переопределить, например, файл my.properties в проекте, который использует мою библиотеку.

Возможно ли это вообще?

Ответы [ 4 ]

2 голосов
/ 30 мая 2019

Не добавляйте файлы application.properties в библиотеку.Это может вызвать множество проблем.Если вы хотите установить свойство по умолчанию, сделайте это следующим образом:

@ConfigurationProperties("foo")
public class FooConfig {

    private int bar = 999;

    // getter / setter

}

Каждое приложение должно настроить значения библиотеки для себя в своем собственном файле application.properties.

0 голосов
/ 30 мая 2019

Зависит от того, как файл свойств библиотеки определяет свойства. Если свойства сначала ищутся из среды / системы, то вы можете переопределить их в своем коде. Если жестко закодировано, то нет. Например:

prop=${ENV_VAR:abc}

Вы можете установить ENV_VAR переменную окружения или env-var системную переменную в своем коде, чтобы переопределить значение prop. Если вы этого не сделаете, будет использовано значение по умолчанию abc.

0 голосов
/ 30 мая 2019

Порядок следования свойств Spring Boot описан здесь:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

Из ссылки:

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

Тогда заказ 1-17. Например, 4 в списке (аргументы командной строки) переопределяет 15 в списке (ваш файл application.properties) и т. Д.

0 голосов
/ 30 мая 2019

Кажется, вы не можете.Поскольку сам Spring также не может

В приведенном выше примере мы настроили service.message для теста, используя атрибут по умолчанию аннотации @SpringBootTest.Не рекомендуется помещать application.properties в библиотеку, потому что во время выполнения может возникнуть конфликт в приложении, которое его использует (только один application.properties загружается из пути к классам).Вы можете поместить application.properties в classpath теста, но не включать его в jar, например, поместив его в src / test / resources.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...