В настоящее время я ищу способ динамической сборки ключей конфигурации (обработка отката), а затем искать их в наших файлах microprofile-config.properties.Такой файл может выглядеть так:
# customer fallbacks
my.config=1234 # use this fallback when there is no customer
customer2.my.config=12345 # use this fallback when there is no subcustomer
customer2.subCustomer1.my.config=123456 # first level
Поэтому, когда есть клиент и субклиент, используйте on
. Причина, по которой я получил эту проблему, заключается в том, что я хотел быиспользуйте аннотацию @ConfigProperty
, поэтому не используйте ConfigProvider.getConfig ().Это означает, что мне придется собрать мой динамический конфигурационный ключ внутри моего пользовательского ConfigSource
.
. Я знаю, что ConfigSources загружаются при запуске сервера через ServiceLoader.Поэтому я попытался удалить существующую конфигурацию и заменить ее своей пользовательской конфигурацией:
import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.spi.ConfigProviderResolver;
@Startup
@Singleton
public class StartupConfigurationRegistrar{
@PostConstruct
private void registerConfig() {
final Config customConfig = ConfigProviderResolver.instance().getBuilder().withSources(new FallbackHandlingConfiguration(myReqiredVariables)).addDefaultSources().build();
ConfigProviderResolver.instance().releaseConfig(ConfigProviderResolver.instance().getConfig());
ConfigProviderResolver.instance().registerConfig(customConfig, Thread.currentThread().getContextClassLoader());
}
}
Мой ConfigSource добавлен правильно.Но позже при попытке доступа к конфигурации в другом классе мой пользовательский ConfigSource
исчез, и остались только три стандартных ConfigSources.Я думаю, что это может быть проблема ClassLoader.
Любые идеи, как получить динамические значения внутри ConfigSource
?