Я не знаю, если это безумие, и возможно ли это вообще.Есть разные способы сделать это вручную, но я пытался быть ленивым и посмотреть, сможет ли 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?Помните, что я даже не знаю местоположение, потому что оно будет извлечено во временную папку.