В настоящее время я пытаюсь заменить нашу текущую библиотеку конфигурации, которая очень проста, выполняет основную работу и заменяет ее на решение с открытым исходным кодом cfg4j. Причина, по которой мы идем дальше, заключается в следующем:
Текущая общая конфигурация, разработанная несколько лет назад, когда мы переходим в kubernetes, мы хотим удалить файл .properties.
Конфигурация теперь определена в ansible-развертывании и ansible-среде, мы хотим отсоединить ее.
Поскольку я впервые заменяю старую библиотеку новой и работаю с библиотекой с открытым исходным кодом.
Я планирую поместить файл application.properties в проект и локально проверить, может ли этот сервис считывать конфигурацию с помощью cfg4j.
Ниже приведен класс конфигурации, который я хочу редактировать (закомментированы строки, над которыми я работаю):
@Configuration
@PropertySource(
value = {
"file:${absoluteConfigDir:/etc/absolute}/operation.properties",
"classpath:dds-dead-letter-service.properties",
"file:${absoluteConfigDir:/etc/absolute}/dds-dead-letter-service.properties"
},
ignoreResourceNotFound = true)
@ImportResource("classpath*:commonContext.xml")
public class PropertyConfig {
/*
@Bean
public ConfigurationSource configurationSource(){
return new FilesConfigurationSource();
}
@Bean
public ConfigurationProvider configurationProvider(ConfigurationSource source) {
return new ConfigurationProviderBuilder().withConfigurationSource(source).build();
}
*/
@Bean
public ConfigurationReaderFactory configurationReaderFactory() {
return new ConfigurationReaderFactory();
}
@Bean
public NewConfigurationReader configurationReader(ConfigurationReaderFactory factory) {
return factory.getConfigurationReader(ConfigurationReaderType.EXTERNAL);
}
@Bean("localConfigurationReader")
public NewConfigurationReader localConfigurationReader() {
return new PropertyConfigurationReader("dds-dead-letter-service.properties");
}
}
Я думаю, что могу заменить NewConfigurationReader
на ConfigurationProvider
, но я не совсем уверен насчет ConfigurationReaderFactory
.
Это реализация класса ConfigurationReaderFactory:
public class ConfigurationReaderFactory {
/**
* To accommodate Spring this method is not static.
*
* @param readerType The configuration reader type
* @return An instance of a configuration reader
*/
public NewConfigurationReader getConfigurationReader(final ConfigurationReaderType readerType) {
NewConfigurationReader reader;
switch (readerType) {
case PROPERTIES:
reader = new PropertyConfigurationReader();
break;
case EXTERNAL:
reader = new ExternalPropertyConfigurationReader();
break;
case REFRESHABLE:
reader = new RefreshableConfigurationReader();
break;
default:
throw new IllegalArgumentException("Unsupported ConfigurationReaderType.");
}
return reader;
}
Я читал документ cfg4j, но, похоже, у него нет фабричного класса (http://www.cfg4j.org/releases/latest/#users-guide). Каков будет мой следующий шаг в замене этих методов? Любая помощь будет принята с благодарностью!