Spring Cloud Feign 整合了Sping Cloud Hystrix和Spring Cloud Ribbon,还提供了一种声明式的Web服务客户端定义方式。我们只需要创建一个接口并用注解的方式来配置它,既可完成对服务提供的接口绑定。
- 快速入门
1.修改服务提供者,添加一个FeignController,用来实现feign调用方法
@RestController
@RequestMapping(value = "/feign")
public class FeignController {
@RequestMapping(value = "/test")
public String testFeign() {
return "Hello World";
}
}
2.新建一个Spring Boot工程,命名为fegin-consumer(随意)
3.编辑pom.xml文件,主要依赖内容如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
4.修改application.yml文件
server:
port: 9000
eureka:
client:
service-url:
defaultZone: http://peer1:1111/eureka/
spring:
application:
name: feign-consumer
5.修改应用主类
//开启 spring cloud feign功能
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class FeginApplication {
public static void main(String[] args) {
SpringApplication.run(FeginApplication.class, args);
}
}
6.添加FeignService
//使用@FeignClient注解指定服务名来绑定服务
@FeignClient("HELLO-CLIENT")
public interface FeignService {
@RequestMapping(value = "/feign/test")
String hello();
}
@FeignClient注解参数绑定的是服务名,绑定时,服务名不区分大小写
image.png
7.添加FeignController
@RestController
@RequestMapping(value = "/feign")
public class FeignController {
@Autowired
FeignService feignService;
@GetMapping(value = "/test")
public String feignConsumer() {
System.out.println("服务提供方返回数据为:" + feignService.hello());
return feignService.hello();
}
}
- 测试验证
访问:http://localhost:9000/feign/test
从结果中可以看到远程调用接口正常,实现了和使用Ribbon实现时一样的效果。
通过Feign我们只需要定义服务绑定接口,以声明式的方法,优雅而简单地实现服务调用。
网友评论