springcloud微服务(七)——feign最佳实践(抽取)

springcloud微服务(七)——feign最佳实践(抽取)

上一节提到了feign远程调用,feign客户端是写在服务中。如果服务越来越多,每个服务都要写feign客户端,造成代码冗余。我们可以把feign客户端抽取出来,需要时,直接引用即可。

1.新建feign-api模块(maven)。创建clients包和pojo包,将UserClient和User复制过来。(feign依赖别忘了引)

2.将order-service中的UserClient和User删除,将feign-api模块引入,替换user和userclient对象。

<dependency>
            <groupId>com.bzw</groupId>
            <artifactId>feign-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

注意:这里有个地方需要注意,我们启动服务时,spring会扫描启动类所在的包,如果我们的UserClient不在服务启动类扫描包内将会扫描不到feign,从而报错。可以通过以下方法解决(启动类中)。

//方式一:指定FeignClient所在包
@EnableFeignClients(basePackages="com.bzw.feign.clients")
//方式二:指定FeignClient字节码
@EnableFeignClients(clients={UserClient.class})
经验分享 程序员 微信小程序 职场和发展