livelessons-spring / building-microservices

Building Microservices with Spring Boot
Apache License 2.0
637 stars 524 forks source link

Spring boot livelessons-choreography-ribbon-and-eureka No qualifying bean #7

Open kyeljmd opened 8 years ago

kyeljmd commented 8 years ago

Running the Spring boot livelessons-choreography-ribbon-and-eureka results in.

rg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'restTemplateExample' defined in file [C:\Users\kyel\projects\building-microservices\livelessons-choreography\livelessons-choreography-ribbon-and-eureka\target\classes\demo\RestTemplateExample.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean found for dependency [org.springframework.web.client.RestTemplate]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.springframework.web.client.RestTemplate]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1148) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1051) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) ~[spring-context-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.BUILD-20160817.160053-41.jar:1.4.1.BUILD-SNAPSHOT] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-1.4.1.BUILD-20160817.160053-41.jar:1.4.1.BUILD-SNAPSHOT] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369) [spring-boot-1.4.1.BUILD-20160817.160053-41.jar:1.4.1.BUILD-SNAPSHOT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:313) [spring-boot-1.4.1.BUILD-20160817.160053-41.jar:1.4.1.BUILD-SNAPSHOT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1185) [spring-boot-1.4.1.BUILD-20160817.160053-41.jar:1.4.1.BUILD-SNAPSHOT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1174) [spring-boot-1.4.1.BUILD-20160817.160053-41.jar:1.4.1.BUILD-SNAPSHOT] at demo.ServiceDiscoveryApplication.main(ServiceDiscoveryApplication.java:14) [classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_60] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_60] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_60] at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_60] at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) [idea_rt.jar:na] Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.springframework.web.client.RestTemplate]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1434) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1085) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1047) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.3.BUILD-20160818.104132-25.jar:4.3.3.BUILD-SNAPSHOT] ... 24 common frames omitted

Do note that livelessons-choreography-eureka-service, livelessons-choreography-contact-service, and livelessons-choreography-bookmark-service are running

donnevel commented 7 years ago

You have to add

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
}

in your SpringBootApplication file because the RestTemplate is not create automatically any more.