Java NonuniqueBeandDefinitionException:没有类型为';AppProperties';可用:需要单个匹配bean,但找到3个
我正在尝试从application.properties文件加载api键值,下面是类文件。我无法启动应用程序,因为它无法找到唯一的bean。不知道我错过了什么。有人能帮忙吗 这是我们的AppProperties.javaJava NonuniqueBeandDefinitionException:没有类型为';AppProperties';可用:需要单个匹配bean,但找到3个,java,spring,spring-boot,java-annotations,Java,Spring,Spring Boot,Java Annotations,我正在尝试从application.properties文件加载api键值,下面是类文件。我无法启动应用程序,因为它无法找到唯一的bean。不知道我错过了什么。有人能帮忙吗 这是我们的AppProperties.java @Component @PropertySource("classpath:application.properties") @ConfigurationProperties(prefix = AppProperties.APP_PROPERTIES_PRE
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = AppProperties.APP_PROPERTIES_PREFIX)
public class AppProperties {
public static final String APP_PROPERTIES_PREFIX = "bi";
private String accessTokenUri;
private String clientId;
private String clientSecret;
private String basicAuth;
private String apiKey;
//getters and setters
}
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "bi")
public class DiagnosticProperties extends AppProperties {
private String diagnosisUrl;
//getters and setters
}
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "bi")
public class ObservationProperties extends AppProperties {
private String observationUrl;
//getters and setters
}
这是我们的DiagnosticProperties.java
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = AppProperties.APP_PROPERTIES_PREFIX)
public class AppProperties {
public static final String APP_PROPERTIES_PREFIX = "bi";
private String accessTokenUri;
private String clientId;
private String clientSecret;
private String basicAuth;
private String apiKey;
//getters and setters
}
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "bi")
public class DiagnosticProperties extends AppProperties {
private String diagnosisUrl;
//getters and setters
}
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "bi")
public class ObservationProperties extends AppProperties {
private String observationUrl;
//getters and setters
}
这是我们的ObservationProperties.java
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = AppProperties.APP_PROPERTIES_PREFIX)
public class AppProperties {
public static final String APP_PROPERTIES_PREFIX = "bi";
private String accessTokenUri;
private String clientId;
private String clientSecret;
private String basicAuth;
private String apiKey;
//getters and setters
}
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "bi")
public class DiagnosticProperties extends AppProperties {
private String diagnosisUrl;
//getters and setters
}
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "bi")
public class ObservationProperties extends AppProperties {
private String observationUrl;
//getters and setters
}
这是我们的DiagnosticServiceImpl.java
@Service
public class DiagnosticServiceImpl implements DiagnosticService {
private static final Logger LOGGER =
LoggerFactory.getLogger(ObservationServiceImpl.class);
private final WebClient webClient;
private final DiagnosticProperties diagnosticProperties;
public DiagnosticServiceImpl(final WebClient webClient,final DiagnosticProperties
diagnosticProperties) {
this.webClient = webClient;
this.diagnosticProperties = diagnosticProperties;
}
@Override
public Mono<DiagnosticResponse> getPatientDiagnosticDetails(final String uri) {
return diagnosticDetails(uri);
}
@服务
公共类DiagnosticServiceImpl实现DiagnosticsService{
专用静态最终记录器=
getLogger(ObservationServiceImpl.class);
私人最终网络客户网络客户;
私有最终诊断属性DiagnosticProperties;
公共诊断服务MPL(最终网络客户端网络客户端,最终诊断属性
诊断属性){
this.webClient=webClient;
this.diagnosticProperties=diagnosticProperties;
}
@凌驾
公共Mono getPatientDiagnosticDetails(最终字符串uri){
返回诊断详细信息(uri);
}
您不应该在AppProperties
上添加任何注释(这可能是一个抽象类)。从它继承的类只需要@ConfigurationProperties(前缀=“…”)
和@组件
,或者也可以使用另一个配置类中的@EnableConfigurationProperties
启用它们
当您注入时-指定要注入的配置属性-可以像您在示例中那样指定类型,也可以向注入点上的参数添加@Qualifier(“bean name”)
Spring Boot开箱即用配置应用程序.properties
属性源