Spring Cloud Feign快速入门案例
一 新建一个Spring boot基础工程,取名feign-consumer,在pom.xml中增加相关依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
</dependencies>
二 创建应用主类,并通过@EnableFeignClients注解开启Spring Cloud Feign的支持功能
package com.didispace;
import feign.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
三 定义HelloService接口,通过@FeignClient指定服务名类绑定服务
package com.didispace.web;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
@FeignClient(name="HELLO-SERVICE", fallback = HelloServiceFallback.class)
public interface HelloService {
//绑定具体服务的REST接口
@RequestMapping("/hello")
String hello();
}
四 创建ConsumerController来实现对Feign客户端的调用
package com.didispace.web;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConsumerController {
//使用@Autowired直接注入上面定义的HelloService的实例
@Autowired
HelloService helloService;
@RequestMapping(value = "/feign-consumer", method = RequestMethod.GET)
public String helloConsumer() {
//调用了绑定HELLO-SERVICE服务接口的客户端向服务发起/hello接口的调用
return helloService.hello();
}
}
五 新增配置文件
spring.application.name=feign-consumer
server.port=9001
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
六 测试
1 启动Eureka,两个Hello-service,然后启动Feign-consumer。
2 观察Eureka面板
3 发送http://localhost:9001/feign-consumer
第一个Hello-service的控制台打印:
2018-08-15 19:42:53.550 INFO 8028 --- [nio-8082-exec-1] com.didispace.web.HelloController : /hello, host:DESKTOP-5SDKDG4, service_id:hello-service
2018-08-15 19:43:24.924 INFO 8028 --- [nio-8082-exec-3] com.didispace.web.HelloController : /hello, host:DESKTOP-5SDKDG4, service_id:hello-service
第二个Hello-service的控制台打印:
2018-08-15 19:43:08.548 INFO 12088 --- [nio-8081-exec-3] com.didispace.web.HelloController : /hello, host:DESKTOP-5SDKDG4, service_id:hello-service
2018-08-15 19:43:14.169 INFO 12088 --- [nio-8081-exec-5] com.didispace.web.HelloController : /hello, host:DESKTOP-5SDKDG4, service_id:hello-service
实现了客户端的负载均衡。
推荐阅读
-
spring-cloud入门之eureka-server(服务发现)
-
spring-cloud入门之spring-cloud-config(配置中心)
-
spring-cloud入门之eureka-client(服务注册)
-
Spring Cloud Gateway入门解读
-
spring cloud config 配置中心快速实现过程解析
-
Spring Cloud Gateway 服务网关快速实现解析
-
详解Spring Cloud Feign 熔断配置的一些小坑
-
spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法
-
详解spring cloud Feign使用中遇到的问题总结
-
使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的方法(推荐)