Как читать @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 везде, где вам нужно

Другие вопросы по тегам