Feign是spring全家桶里面一个简单的组件。这个单词的英语含义是“佯装”,所以我们用feign做服务间的http通信,其实就是把你想要调用的、其他服务的接口,佯装成一个你接口中的一个调用。
服务B想要调用上面这个服务A里的接口,做下面两步就行了
第一步:
common服务添加完spring-cloud-starter-feign依赖后,在服务B中编写接口如下,接口上用@FeignClient注解,其中name这个属性就是服务发现时A服务的名称,如果要做成公共的,这个接口也可以写进common服务。
不过要注意的common服务的对象初始化,可能会造成B调用这个公共服务对象初始化失败的问题的坑,我是在B里面用到了就写在B中,看具体有没有需要做成统一提供出去的服务吧。
第二步:
服务B的starter上加注解@EnableFeignClients,这个注解会让spring在启动的时候,扫描在服务B里标记了@FeignClient注解的接口,并生成此接口的代理对象。
以后你直接注入接口,像调用实现类方法一样,就可以调用A服务里的接口了。