Spring Boot аннотации: один PropertySource, много свойств? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь выполнить настройку, при которой один файл .properties фактически разбирается на несколько объектов Properties.

Но ни одна комбинация вариантов (вложенные классы, квалификаторы и т. Д.) Фактически не дает такого же результата.

Возможно ли это вообще?Каков рекомендуемый способ сделать это?

Пример ниже!

  // file: plugins.properties

  plugins.FooPlugin.enabled=true
  plugins.FooPlugin.amount=1
  plugins.BarPlugin.enabled=false
  // file: (...)/foo/Properties.java

  @Configuration
  @Qualifier("Foo Plugin Properties")
  @PropertySource("classpath:plugins.properties")
  @ConfigurationProperties(prefix = "plugins.foo-plugin")
  public class FooPluginProperties {
    boolean enabled;
    Integer amount; 
  }

  // file: (...)/bar/Properties.java

  @Configuration
  @Qualifier("Bar Plugin Properties")
  @PropertySource("classpath:plugins.properties")
  @ConfigurationProperties(prefix = "plugins.bar-plugin")
  public class BarPluginProperties {
    boolean enabled;
  }

Возможно, я немного запутался в магии разбора свойства здесь.

1 Ответ

0 голосов
/ 27 марта 2019
@ConfigurationProperties(prefix="plugins")
public class FooBarProperties{
    @Value("${FooPlugin.enabled}")
    private boolean enabled;

    @Value("${FooPlugin.amount}")
    private Integer amount;

    @Value("${BarPlugin.enabled}")
    private boolean enabled;
}

Если вам нужен отдельный класс, просто переместите этот плагин bar в его собственное pojo

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

public void someFooBar() {
  @Autowired
  private FooBarProperties foobarProp;

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