nouniquebeandefinitionexception:没有“appproperties”类型的限定bean可用:应为单个匹配bean,但找到3个

r9f1avp5  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(282)

我正在尝试从application.properties文件加载api键值,下面是类文件。我无法启动应用程序,因为它无法找到唯一的bean。不知道我错过了什么。有人能帮忙吗。
这是我们的appproperties.java

  1. @Component
  2. @PropertySource("classpath:application.properties")
  3. @ConfigurationProperties(prefix = AppProperties.APP_PROPERTIES_PREFIX)
  4. public class AppProperties {
  5. public static final String APP_PROPERTIES_PREFIX = "bi";
  6. private String accessTokenUri;
  7. private String clientId;
  8. private String clientSecret;
  9. private String basicAuth;
  10. private String apiKey;
  11. //getters and setters
  12. }

这是我们的diagnosticproperties.java

  1. @Component
  2. @PropertySource("classpath:application.properties")
  3. @ConfigurationProperties(prefix = "bi")
  4. public class DiagnosticProperties extends AppProperties {
  5. private String diagnosisUrl;
  6. //getters and setters
  7. }

这是我们的observationproperties.java

  1. @Component
  2. @PropertySource("classpath:application.properties")
  3. @ConfigurationProperties(prefix = "bi")
  4. public class ObservationProperties extends AppProperties {
  5. private String observationUrl;
  6. //getters and setters
  7. }

这是我们的diagnosticserviceimpl.java

  1. @Service
  2. public class DiagnosticServiceImpl implements DiagnosticService {
  3. private static final Logger LOGGER =
  4. LoggerFactory.getLogger(ObservationServiceImpl.class);
  5. private final WebClient webClient;
  6. private final DiagnosticProperties diagnosticProperties;
  7. public DiagnosticServiceImpl(final WebClient webClient,final DiagnosticProperties
  8. diagnosticProperties) {
  9. this.webClient = webClient;
  10. this.diagnosticProperties = diagnosticProperties;
  11. }
  12. @Override
  13. public Mono<DiagnosticResponse> getPatientDiagnosticDetails(final String uri) {
  14. return diagnosticDetails(uri);
  15. }
j5fpnvbx

j5fpnvbx1#

你不应该把任何注解放在 AppProperties (那可能是一个抽象类)。从它继承的类只需要 @ConfigurationProperties(prefix = "..") 以及 @Component 或者也可以使用 @EnableConfigurationProperties 从另一个配置类。
当您注入时-指定要注入的配置属性-或者像您在示例中所做的那样指定类型,或者添加 @Qualifier("bean-name") 注入点上的参数。
Spring Boot开箱即用配置 application.properties 财产来源。

相关问题