Spring Cloud Netflix 组件使用(二): Spring Cloud Feign

关于feign:feign是一个伪RPC远程调用的组件,默认集成了ribbon。
之前用 RestTemplate 跟 ribbon 完成远程调用跟负载均衡的事,现在用默认集成了ribbon的feign完成。
用 RestTemplate 时 使用不同的调用地址,用feign时使用不同的接口对象与接口内的方法 匹配不同的服务

使用
1.pom文件中引用依赖
Spring Cloud Netflix 组件使用(二): Spring Cloud Feign
2.application.properties 配置文件中配置服务提供地址
Spring Cloud Netflix 组件使用(二): Spring Cloud Feign

3.创建一个接口,标注@FeignClient注解,value写配置文件中的服务名称,方法标注@XXXMapping
Spring Cloud Netflix 组件使用(二): Spring Cloud Feign
4.启动类上加上 @EnableFeignClient注解,basePackages要扫描到@FeignClient注解的类
Spring Cloud Netflix 组件使用(二): Spring Cloud Feign
5,直接@Autowired注入接口,直接使用接口中的方法,即可负载均衡调用远程服务
Spring Cloud Netflix 组件使用(二): Spring Cloud Feign
以上是客户端的做法,服务器端要有一模一样的方法实现。

另外一种方式,服务端提供一个api模块里面提供一个接口,提供一个@FeignClient接口 extends这个接口,及其他接口方法参数需要的实体,这个api模块是要被客户端与服务器端共同依赖的。
然后,服务端其他模块写这个接口的实现类
客户端引用服务端的api模块,@EnableFeignClient注解扫描到api模块中的@FeignClient注解的接口,然后直接注入接口,进行远程调用