【问题标题】:cannot find DiscoveryClient bean error in spring boot在 Spring Boot 中找不到 DiscoveryClient bean 错误
【发布时间】:2017-08-08 06:38:56
【问题描述】:
2017-03-16 16:09:08.821 INFO 9104 --- [main] com.hello.EurekaClientApplication:没有活动配置文件集,回退到默认配置文件:默认
2017-03-16 16:09:08.848 INFO 9104 --- [main] ationConfigEmbeddedWebApplicationContext:刷新 org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5dcd8c7a:启动日期 [Thu Mar 16 16:09:08 CDT 2017];父:org.springframework.context.annotation.AnnotationConfigApplicationContext@441772e
2017-03-16 16:09:09.873 INFO 9104 --- [main] o.s.b.f.s.DefaultListableBeanFactory:用不同的定义覆盖 bean 'hystrixFeature' 的 bean 定义:替换 [Root bean: class [null];范围=;摘要=假;懒惰初始化=假;自动线模式=3;依赖检查=0;自动接线候选=真;主要=假; factoryBeanName=org.springframework.cloud.netflix.hystrix.HystrixCircuitBreakerConfiguration$HystrixWebConfiguration; factoryMethodName=hystrixFeature;初始化方法名=空; destroyMethodName=(推断);在类路径资源 [org/springframework/cloud/netflix/hystrix/HystrixCircuitBreakerConfiguration$HystrixWebConfiguration.class]] 中定义,带有 [Root bean: class [null];范围=;摘要=假;懒惰初始化=假;自动线模式=3;依赖检查=0;自动接线候选=真;主要=假; factoryBeanName=org.springframework.cloud.netflix.hystrix.HystrixCircuitBreakerConfiguration; factoryMethodName=hystrixFeature;初始化方法名=空; destroyMethodName=(推断);在类路径资源 [org/springframework/cloud/netflix/hystrix/HystrixCircuitBreakerConfiguration.class] 中定义
2017-03-16 16:09:10.364 WARN 9104 --- [main] o.s.c.a.ConfigurationClassPostProcessor:无法增强 @Configuration bean 定义“refreshScope”,因为它的单例实例创建得太早了。典型原因是具有 BeanDefinitionRegistryPostProcessor 返回类型的非静态 @Bean 方法:考虑将此类方法声明为“静态”。
2017-03-16 16:09:10.701 INFO 9104 --- [main] os.cloud.context.scope.GenericScope:BeanFactory id=d0eb8cfd-bd5b-3565-9f63-f671e896f6be
2017-03-16 16:09:10.736 INFO 9104 --- [main] f.a.AutowiredAnnotationBeanPostProcessor:发现并支持自动装配 JSR-330 'javax.inject.Inject' 注释
2017-03-16 16:09:11.312 INFO 9104 --- [main] trationDelegate$BeanPostProcessorChecker:[org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$ 类型的 Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' $94394ff6] 不符合被所有 BeanPostProcessor 处理的条件(例如:不符合自动代理的条件)
2017-03-16 16:09:12.091 INFO 9104 --- [main] s.b.c.e.t.TomcatEmbeddedServletContainer:Tomcat 使用端口初始化:8080 (http)
2017-03-16 16:09:12.128 INFO 9104 --- [main] o.apache.catalina.core.StandardService:启动服务 Tomcat
2017-03-16 16:09:12.130 INFO 9104 --- [main] org.apache.catalina.core.StandardEngine:启动 Servlet 引擎:Apache Tomcat/8.5.11
2017-03-16 16:09:12.546 INFO 9104 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]:初始化 Spring 嵌入式 WebApplicationContext
2017-03-16 16:09:12.547 INFO 9104 --- [ost-startStop-1] os.web.context.ContextLoader:根 WebApplicationContext:初始化在 3699 毫秒内完成
2017-03-16 16:09:13.191 信息 9104 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean:映射 servlet:'proxyStreamServlet' 到 [/proxy.stream]
2017-03-16 16:09:13.193 信息 9104 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean:映射 servlet:'dispatcherServlet' 到 [/]
2017-03-16 16:09:13.198 信息 9104 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean:映射过滤器:'metricsFilter' 到:[/*]
2017-03-16 16:09:13.199 信息 9104 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean:映射过滤器:'characterEncodingFilter' 到:[/*]
2017-03-16 16:09:13.199 INFO 9104 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean:映射过滤器:'hiddenHttpMethodFilter' 到:[/*]
2017-03-16 16:09:13.200 INFO 9104 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean:映射过滤器:“httpPutFormContentFilter”到:[/*]
2017-03-16 16:09:13.200 INFO 9104 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean:映射过滤器:'requestContextFilter' 到:[/*]
2017-03-16 16:09:13.200 INFO 9104 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean:映射过滤器:'webRequestLoggingFilter' 到:[/*]
2017-03-16 16:09:13.200 信息 9104 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean:映射过滤器:'applicationContextIdFilter' 到:[/*]
2017-03-16 16:09:13.269 WARN 9104 --- [main] ationConfigEmbeddedWebApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“eurekaClientApplication”的bean时出错:不满意通过字段“clientservice”表达的依赖关系;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:创建文件 [C:\Users\Mike\workspace\Eureka_client\target\classes\com\hello\ClientService.class] 中定义的名称为“clientService”的 bean 时出错:不满意通过构造函数参数 0 表示的依赖关系;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.netflix.discovery.DiscoveryClient”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注释:{}
2017-03-16 16:09:13.306 INFO 9104 --- [main] o.apache.catalina.core.StandardService:停止服务 Tomcat
2017-03-16 16:09:13.404 信息 9104 --- [主要] utoConfigurationReportLoggingInitializer:
启动 ApplicationContext 时出错。要显示自动配置报告,请在启用“调试”的情况下重新运行您的应用程序。
2017-03-16 16:09:13.745 错误 9104 --- [主要] o.s.b.d.LoggingFailureAnalysisReporter:
******************************
应用程序无法启动
******************************
描述:
com.hello.ClientService 中构造函数的参数 0 需要找不到类型为“com.netflix.discovery.DiscoveryClient”的 bean。
行动:
考虑在您的配置中定义“com.netflix.discovery.DiscoveryClient”类型的 bean。
package com.hello;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.stereotype.Service;
import com.netflix.discovery.DiscoveryClient;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
@EnableDiscoveryClient
@Service
public class ClientService {
private final DiscoveryClient disc;
public ClientService(DiscoveryClient disc){
this.disc=disc;
}
@HystrixCommand(fallbackMethod="disp")
public String serviceInstancesByApplicationName(){
return this.disc.getInstancesById("a-bootiful-client").toString();
}
public String disp(){
return "This is fall back method";
}
}
package com.hello;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
@EnableHystrix
@EnableHystrixDashboard
@EnableDiscoveryClient
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
@RestController
public class EurekaClientApplication {
@Autowired
private ClientService clientservice;
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
@RequestMapping("/serv")
public String serviceInstancesByApplicationName(){
return clientservice.serviceInstancesByApplicationName();
}
}
我正在尝试创建一个简单的 eureka 服务和客户端程序并在其上启用 hystrix。但我在代码上收到此错误
【问题讨论】:
-
SO 不是调试服务。请添加说明您为调查您的问题所做的尝试的文字。解释你的代码的哪一部分似乎按照你想要的方式工作,哪一部分没有。表现出你的一些努力,否则看起来你只是转储一个大错误消息并期望人们为你调试你的代码。
标签:
spring-boot
netflix-eureka