Автозагрузка и свойства весенней загрузки - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть 2 модуля в моем проекте приложения и стартера. Стартер содержит @Configuration и сообщает, как должен быть создан компонент ServiceFoo.

@Configuration
@EnableConfigurationProperties(FooServiceConfiguration.class)
public class StarterFoo {

    @Bean
    public ServiceFoo defaultBean(FooServiceConfiguration conf){
      new ServiceFooImpl(conf.getName(), conf.getNumber());
    }

}

У меня есть другой класс конфигурации в моем стартере.

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties("Foo")
public class FooServiceConfiguration {
    private String name;
    private int number;
    // + accessors
}

в моем стартере у меня есть application.yml, который имеет

Foo:
 name: DefaultName
 number: 101

стартер настроен для автоматической настройки

META-INF / spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=StarterFoo

Я хочу узнать мнение о моей конфигурации относительно номера, и пользователь никогда не будет беспокоиться и переопределит этот номер. Я хочу, чтобы пользователи переопределяли имя в моей конфигурации.

Как только я создаю application.yml в приложении (пустой файл), эффект конфигурации стартера (из application.yml из стартера) исчезает.

Как я могу частично переопределить этот конфиг из приложения, которое определено в стартере?

1 Ответ

0 голосов
/ 19 ноября 2018

Может быть только один файл конфигурации загрузки с определенным именем, независимо от того, где на пути к классам они расположены (т. Е. Вы можете иметь application-test.yml и application.yml, но только по одному для каждого) и «ближе» "во время выполнения (жирная банка) переопределяет более отдаленные (встроенные банки). Boot не объединяет содержимое, он просто читает только один application.yml.

Самый простой способ выполнить то, что вы хотите, - это нормально использовать Java и инициализировать переменные класса значениями по умолчанию:

private String name = "DefaultName";
private int number = 101;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...