学习SpringCloud的碰到的问题,可能多数人都没有注意到Springboot版本和SpringCloud版本需要对应,如果版本不对应就会出现下面的异常。
问题描述
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'demoController': Unsatisfied dependency expressed through field 'userRemoteClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.cx.feign_demo.remote. UserRemoteClient': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: Method hello not annotated with HTTP method type (ex. GET, POST)
# 原因分析:
SpringCloud版本和SpringBoot的版本是需要对应的不能随便使用一个版本的,大家可以到官网去查看一下 跳转Spring Cloud文档,日志提示我可能存在循环依赖问题,可是我检查了一遍之后发现好像并没有循环依赖的问题(也有可能是我没发现),总之就是因为这个问题导致我这个 服务无法启动
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/953cfeddced84c7bb2854473a5999ca4.png)
# 解决方案:
那么如何解决这一问题呢?看过普遍的几种解决方法。
在服务调用方 orderService 的启动类上添加上扫描feign包的注解 @ComponentScan("cn.itcast.feign")
修改父工程里面的springcloud依赖版本 <spring-cloud.version>Hoxton.SR8</spring-cloud.version> (把SR10改成了SR8)
在服务调用方注入feign客户端 UserClient 时,采用 @Lazy 注解使其延迟注入
只要采用上面三种方法中的任何一个,服务调用方都能够重新正常启动。
附上我降级后的依赖:
org.springframework.boot spring-boot-starter-parent 2.0.6.RELEASE ``` org.springframework.cloud spring-cloud-dependencies Finchley.SR2 pom import 路漫漫其修远兮,继续走起~