如何在单个类中读取不同前缀的@ConfigurationProperties

时间:2018-10-25 09:15:53

标签: spring-boot spring-annotations

我在github上有2个不同的application.yaml用于spring-boot应用程序。以下是这两个示例的内容:

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')

简而言之,我想在单个类的spring-boot微服务中访问两个application.yaml配置。但是,我无法实现。 请提供访问这两个属性的任何建议。

1 个答案:

答案 0 :(得分:2)

为什么必须将一个类继承到另一个类?

拥有具有两个@ConfigurationProperties注释类作为属性的新类不是更好。

例如

@Component
public class Properties {

    @Autowired
    ApplicationProperties applicationProperties;

    @Auworied
    KafkaProperties kafkaProperties;
}

,只需在需要的地方使用Properties.class