Feign
实现服务间的调用。
在本项目中的使用:商品详情页微服务中需要调用商品微服务中的接口时,利用Feign实现了优雅的调用。
@RequestMapping(“brand”)
public interface BrandApi {
@GetMapping("{id}")
public Brand queryBrandById(@PathVariable(“id”) Long id);
}
@FeignClient(“item-service”)
public interface BrandClient extends BrandApi{
}
并在启动类中加入注解
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class LeyouSearchApplication {
public static void main(String[] args) {
SpringApplication.run(LeyouSearchApplication.class);
}
}
这样就可以直接调用,而不会用再去自己拼接url和参数,为开发带来了很大的遍历。
Feign中整合了Rabbion和eureka,也可以集成Hystix。
总结:如果不用feign,则需要在自己定义的client接口中写出要调用的服务的接口。但是如果被调用的接口时别人写的,不知道方法参数和url,因此每个开发人员将自己写的方法抽取到一个接口中,而client中直接调用该接口即可。这样可防止代码的冗余。