方式二(抽取):将FeignClient抽取为独立模块,并且把接口有关的POJO、默认的Feign配置都放到这个模块中,提供给所有消费者使用
Feign的最佳实践:
①
让
controller
和
FeignClient
继承同一接口
②
将
FeignClient
、
POJO
、
Feign
的默认配置都定义到一个项目中,供所有消费者使用
抽取FeignClient
实现最佳实践方式二的步骤如下:
1.
首先创建一个
module
,命名为
feign-
api
,然后引入
feign
的
starter
依赖
2.
将
order-service
中编写的
UserClient
、
User
、
DefaultFeignConfiguration
都复制到
feign-
api
项目中
3.
在
order-service
中引入
feign-
api
的依赖
4.
修改
order-service
中的所有与上述三个组件有关的
import
部分,改成导入
feign-
api
中的包
5.
重启测试
当定义的FeignClient不在SpringBootApplication的扫描包范围时,这些FeignClient无法使用。有两种方式解决:
方式一:指定FeignClient所在包
@EnableFeignClients(basePackages = "cn.itcast.feign.clients")
方式二:指定FeignClient字节码
@EnableFeignClients(clients = {UserClient.class})
不同包的FeignClient的导入有两种方式:
①
在
@EnableFeignClients
注解中添加
basePackages
,指定
FeignClient
所在的包
②
在
@EnableFeignClients
注解中添加
clients
,指定具体
FeignClient
的字节码