Feign使用接口远程调用学习
一、了解Feign
- Ribbon是基于客户端
- Feign是声明式 web service客户端,可以让微服务之间得调用变得更简单!类似controller调用service.
- SpringCloud 集成了Ribbon 和Eureka,可在使用Feign时提供负载均衡得http客服端
- 只需要创建一个接口,然后添加注解即可!
二、新建springcloud-consumer-dept-feign服务
2.1 把80 全部黏贴过来
2.2 在api内创建service包
① pom导包
<!--feign负载均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
② 编写service @FeignClient value值是服务名
③ 在dept-feign的服务里面将之前的restTemplate改成接口类型feign
④ 在dept-feign的启动类添加配置
2.3 注意点
- @EnableFeignClients与@ComponentScan有冲突
- 两种注解都会搜索注入指定目录中的bean
- @EnableFeignClients 引入了FeignClientsRegistrar类,实现了spring的bean、资源的加载
FeignClientsRegistrar中registerFeignClients获取了@EnableFeignClients注解中的basepackage值,并进行注入 - 如果两种注解都使用时,其中@EnableFeignClients会覆盖@ComponentScan中指定的目录,从而恢复到默认目录
1. 可以将bean放在和main启动类同级目录
2. 可以在@EnableFeignClients中指定bean目录