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

Spring boot 如何在单个类中读取不同前缀的@ConfigurationProperties,spring-boot,spring-annotations,Spring Boot,Spring Annotations,我在github有2个不同的application.yaml用于spring引导应用程序。以下是这两个项目的示例内容: first application.yaml: 应用程序: 名称:样本服务 第二个application.yaml: 常见的: 卡夫卡: 主题:测试 我创建了一个配置类(abc.java),其中包含@ConfigurationProperties(前缀='common.kafka')和 另一个配置类(xyz.java),带有@ConfigurationProperties(前缀

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

first application.yaml:
应用程序:
名称:样本服务
第二个application.yaml:
常见的:
卡夫卡:
主题:测试

我创建了一个配置类
(abc.java),其中包含@ConfigurationProperties(前缀='common.kafka')
和 另一个配置类
(xyz.java),带有@ConfigurationProperties(前缀='application')

在xyz.java中,我继承了abc.java。在执行xyz.java时,我无法访问abc.java的属性,因此无法获得NPE。如果我保持相同的前缀层次结构,即@ConfigurationProperties(prefix='application'),就可以实现这一点

简言之,我希望在单个spring boot micro服务类中访问两个application.yaml配置。然而,我无法做到这一点。
请提供访问这两个属性的任何建议。

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

让两个@ConfigurationProperties注释类作为属性的新类不是更好吗

例如


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

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

让两个@ConfigurationProperties注释类作为属性的新类不是更好吗

例如


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

我就继承它,因为它来自我们的内部库,我们创建该库是为了在一个地方拥有所有公共配置。此库作为依赖项添加到project@eshaingle如前所述,您可以将它们自动关联为两个不同的类。这些只是bean,您必须通过依赖注入来很好地处理它们;)同意,但在图书馆里我们不想有Bean的概念。它只是一个普通的库。在我看来,当你在库中的类上使用@ConfigurationProperties时,你已经进入了Bean的概念。您的问题是注释继承,请参考这个答案,我继承它是因为它来自我们的内部库,创建该库是为了在一个地方具有所有公共配置。此库作为依赖项添加到project@eshaingle如前所述,您可以将它们自动关联为两个不同的类。这些只是bean,您必须通过依赖注入来很好地处理它们;)同意,但在图书馆里我们不想有Bean的概念。它只是一个普通的库。在我看来,当你在库中的类上使用@ConfigurationProperties时,你已经进入了Bean的概念。您的问题是注释继承,请参考此答案
@Component
public class Properties {

    @Autowired
    ApplicationProperties applicationProperties;

    @Auworied
    KafkaProperties kafkaProperties;
}