Как читать @ConfigurationProperties для разных префиксов в одном классе
У меня есть 2 различных application.yaml на github для весенне-загрузочного приложения. Ниже приведен пример содержимого для обоих:
first application.yaml :
application:
name: sample-service
second application.yaml :
common:
kafka:
topic: test
Я создал один класс конфигурации(abc.java) with @ConfigurationProperties( prefix='common.kafka')
и другой класс конфигурации(xyz.java) with @ConfigurationProperties( prefix='application')
Здесь, в xyz.java, я наследую abc.java. При выполнении xyz.java я не могу получить доступ к свойствам abc.java, получая NPE. Это достигается, если я сохраняю иерархию префиксов, то есть @ConfigurationProperties( prefix='application')
Короче говоря, я хочу получить доступ к обеим конфигурациям application.yaml в одном классе Spring-Micro. Однако я не могу этого достичь. Пожалуйста, предоставьте любое предложение для доступа к обоим свойствам.
1 ответ
Почему вы должны наследовать один класс в другой?
Не лучше ли иметь новый класс, который имеет два аннотированных класса @ConfigurationProperties в качестве свойств.
Например
@Component
public class Properties {
@Autowired
ApplicationProperties applicationProperties;
@Auworied
KafkaProperties kafkaProperties;
}
и просто используйте свой Properties.class везде, где вам нужно