Java 尤里卡客户机-can';t autowire客户端(spring说定义了2个bean)

Java 尤里卡客户机-can';t autowire客户端(spring说定义了2个bean),java,maven,spring-boot,netflix-eureka,service-discovery,Java,Maven,Spring Boot,Netflix Eureka,Service Discovery,我有一个应用程序是eureka discovery客户端 它可以在我的Eureka服务器上注册 遗憾的是,当我尝试在任何@Component或@Service类中自动连接EurekaClient以获取注册表实例详细信息时,我被告知无法自动连接,因为有两个bean定义: 我不知道是什么原因造成的。我的pom中有以下依赖项 <dependency> <groupId>org.springframework.cloud</groupId> <

我有一个应用程序是eureka discovery客户端

它可以在我的Eureka服务器上注册

遗憾的是,当我尝试在任何@Component或@Service类中自动连接EurekaClient以获取注册表实例详细信息时,我被告知无法自动连接,因为有两个bean定义:

我不知道是什么原因造成的。我的pom中有以下依赖项

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <exclusions>
        <exclusion>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
我真的不明白为什么它会认为有两个bean符合这个描述

FWIW,奇怪的是,我可以在没有@Component或@Service注释的类中自动连接它。。。它们工作正常-我已经设法让它们正确返回实例信息

我有一种感觉,而且我也读过一些关于它的文章,那就是在我的服务中使用jersey 2.0会干扰eureka。我可以换成领事

非常感谢您的建议

编辑:(添加了测试类)

这并没有告诉你太多-它只是基本的应用程序测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyAppApplicationTest {

    @Test
    public void contextLoads() {
    }
}
。。。很多测试都扩展了这个类,但它自己都失败了。尝试构建当前已自动连接到EurekaClient的资源类时出现问题

原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.netflix.discovery.EurekaClient”类型的合格bean可用:至少需要1个符合autowire候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

如果通过设置禁用Eureka客户端,则bean不可用

eureka.client.enabled=false
根据使用的类,可以使用
@conditionalnproperty(“eureka.client.enabled”)
对其进行注释,以便仅在启用eureka客户端时加载它

另一个解决方案是设置

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

正如《春天云网飞》(SpringCloudNetflix)中所解释的,几年过去了,这种情况仍然存在


我现在回答我自己的问题,因为这显然是一个想法问题。它周围没有构建或运行问题,如果禁用检查,程序就可以了。我不明白IDEA为什么会特别对Eureka客户端产生异常。

是Intellij给了您这个错误,还是在您运行应用程序时引发了异常?很好。它可以很好地编译,也可以在没有测试的情况下很好地构建。但是,如果使用完整测试进行构建,则在上下文启动期间,使用@RunWith(SpringRunner.class)@SpringBootTest运行的测试将在以下情况下中断:“通过字段‘discoveryClient’表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为“com.netflix.discovery.EurekaClient”的合格bean可用。。。“-它也可以作为spring引导应用程序正常运行。也许这只是一个测试上下文问题,我可以在修复后关闭警告?使用测试类更新问题。我想我们正在接近根本原因。很抱歉延迟-刚刚添加了测试+一些错误。我知道已经有一段时间了,但您是否设法解决了这个问题,有什么提示吗?谢谢
eureka.client.enabled=false
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false