Динамическая загрузка PropertySources для создания экземпляров JobScoped Beans - PullRequest
0 голосов
/ 13 ноября 2018

Я не знаю, если это безумие, и возможно ли это вообще.Есть разные способы сделать это вручную, но я пытался быть ленивым и посмотреть, сможет ли Spring сделать это для меня.

У меня есть процесс Spring Batch, который требует настройки для каждого запуска.Поскольку существует множество доступных конфигураций и из разных источников (в основном из разных репозиториев Git), в зависимости от параметров jobParameters, передаваемых в задание.

В настоящее время, когда задание запускается, все мои bean-компоненты определяются с помощью @JobScope.Я использую jGit для клонирования конфигурации, представленной в параметрах задания, и я хотел установить Pojo с @Value и @ ConfigurationProperties.

Пример:

@Data
@ConfigurationProperties
@Validated
public class MyConfiguration{
   @NotNull
   @Value("${myConfig1}")
   private String myConfig1;

   ...
}

В настоящее время я используюэтот код для добавления свойства propertySources в среду:

val loader = new YamlPropertySourceLoader();
List<PropertySource<?>> list = loader.load(name, new FileSystemResource(path));
MutablePropertySources sources = env.getPropertySources();
for (val propertySource : list) {
    sources.addFirst(propertySource);
}

Но если я параллельно запускаю второе задание, в среду все еще добавляется propertySource к первому заданию.

Возможно лиУ вас есть простой способ инициализации этого компонента (и других, которые мне понадобятся позже) с помощью @Value, но только из списка PropertySources?Помните, что я даже не знаю местоположение, потому что оно будет извлечено во временную папку.

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