В проекте Spring-Boot 2.2.0 и Java8.
У меня есть некоторые свойства в моем application- (profileActive) .properties (так, на войне), которые я хочу вывести на внешний конфигурационный файл (вне войны). Это связано с тем, что эти свойства изменяются раз в полгода, и их удобнее хранить в виде простых текстовых файлов (я могу использовать команду sed и т. Д. c).
Необходимо указать расположение файлов изменяемых свойств. в приложении- (profileActive) .properties (изменяется в зависимости от среды) в свойстве mutableproperties.project. root
Я ищу решение, с помощью которого в рамках всего проекта все @Value продолжает работать, как будто ничего не происходит (после перезапуска).
Я пытаюсь загрузить эти свойства для одного файла, используя класс ниже:
@Configuration
public class MutableProperties {
@Value("${mutableproperties.project.root}")
private String mutablePropertiesRoot;
private String configFile(String type) {
StringBuffer file = new StringBuffer(mutablePropertiesRoot).append(File.pathSeparatorChar);
file.append(type).append(".properties");
return file.toString();
}
@Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurerDb() {
PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
properties.setLocation(new FileSystemResource(configFile("db")));
properties.setIgnoreResourceNotFound(false);
return properties;
}
}
Проблема изменчива Root равно null (и оно присутствует во всех приложениях (profileActive) .properties) как:
mutableproperties.project.root=/etc/properties/boot/myproject
Я пробовал с stati c PropertySourcesPlaceholderConfigurer, но он не подходит поскольку имя файла на самом деле является динамическим c.
Я открыт для других решений для решения проблемы, но изменения в JVM или действиях во многих классах не подходит. Это должно быть хирургическое изменение, которое будет работать в уже производственной среде