构建基于 Feign 的微服务:从 Eureka 到负载均衡的实践 --day05
目录
-
- 步骤1:创建父工程feign-1
- 步骤2:改造服务提供者
-
- 使用 `@RequestMapping`
- 使用 `@GetMapping`
- 步骤3:改造服务消费者为Feign客户端
-
- (1)添加Feign依赖
- (2)添加@EnableFeignClients注解
- (3)实现Feign Client
- 创建FeignController类,调用sayHello()方法
- 步骤4:测试运行
- 参数绑定
-
- 步骤1:改造服务提供者eureka-provider
- 步骤2:改造含有Feign的eureka-consumer
-
- (1)在FeignService类中增加绑定参数的方法
- (2)在FeignController类中调用FeignService中的方法
- 步骤3:测试运行
- 总结
Feign,由Netflix打造的声明式HTTP客户端,提供了一种简便的方式来进行服务调用。
结合Eureka和Ribbon,Feign不仅具备了服务发现的机制,还实现了负载均衡功能。
通过Feign,开发者仅需定义接口并利用注解配置,便可轻松实现对服务接口的绑定。
这极大地简化了使用Ribbon封装服务调用的过程。
因此,Feign可被视为Spring Cloud中的一种框架工具,旨在减少编码量,同时提升与远程服务的兼容性和交互效率。
第一个Feign程序
步骤:
1.搭建Eureka Server
2.创建服务提供者
3.创建Feign客户端
4.测试运行
步骤1:创建父工程feign-1
将搭建的Eureka基本应用中的3个子项目都复制到feign-1父工程中,并依次添加为Maven项目。
步骤2:改造服务提供者
在服务提供者eureka-provider中创建controller包,并在该包下创建HelloController类,该类定义了一个sayHello ()方法,用于处理路径为/hello的请求。
HelloController类的内容如下:
@RestController
public class HelloController {
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String say(){
return "feign!";
}
}
在Spring Framework中,@GetMapping实际上是@RequestMapping的一个专门化子注解,主要用于处理HTTP的GET请求。
这一注解是在Spring Framework的4.3版本中引入的,目的在于提升代码的语义清晰度和可读性。
接下来,我们来对比一下这两个注解的使用:
使用 @RequestMapping
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String say() {
return "feign!";
}
这里,@RequestMapping
注解指定了 URL 路径 /hello
并且限定了只有 GET 请求才会触发此方法。
使用 @GetMapping
@GetMapping("/hello")
public String say() {
return "feign!";
}
@GetMapping作为@RequestMapping针对GET请求的特定版本,它默认只处理GET请求,因此无需显式设置method属性。
这样不仅使代码更加简洁,也使得其意图更为明显和直接。
两者在功能上是等价的,但是 @GetMapping
提供了更好的语义表达力。
步骤3:改造服务消费者为Feign客户端
(1)添加Feign依赖
在eureka-consumer项目的pom文件中,我们需要添加Feign依赖。
<dependency>