引用不了FeignClient
问题现象:无法引入或注入feign服务,不能正常使用feign服务调用方法。
解决方案:
1,在使用feign服务的启动类上加注解引用 @EnableFeignClients
服务。
@EnableFeignClients(basePackages = {"com.xxx.client"}) //启动类上
,2,在服务调用者添加feign服务的依赖。
<dependency>
<groupId>com.xxx</groupId>
<artifactId>feign-api</artifactId>
<version>1.0</version>
</dependency>
调用方法失败(访问404)
问题现象:远程调用方法失败,接口访问404。
解决方案:检查 @FeignClient()
注解配置的服务名称和接口的访问路径/参数,feign调用发起的请求必须和被调用的请求一致。
@FeignClient("被调用的服务名称") //类上
@GetMapping("/item/list") //方法上
项目启动报错 xxx.FeignClientSpecification 无法注册
问题现象:项目启动时报错:xxx.FeignClientSpecification
无法注册。已定义具有该名称的 Bean,并且已禁用覆盖。
The bean 'xxx.FeignClientSpecification' could not be registered. A bean with that name has already been defined and overriding is disabled.
解决方案:在配置文件设置,将后来发现的bean覆盖之前相同名称的bean。
spring:
main:
allow-bean-definition-overriding: true # 后来发现的bean会覆盖之前相同名称的bean
接口连接超时
问题现象:debug调试时间过长或远程访问接口超时。
解决方案:在配置文件设置接口的超时时间。
feign:
client:
config:
default:
connectTimeout: 10000 #单位毫秒
readTimeout: 10000 #单位毫秒