Spring Cloud 框架 -- OpenFeign

什么是 OpenFeign

前面无论是基本调用,还是 Hystrix ,我们实际上都是通过手动调用 RestTemplate 来实现远程调用。

使用 RestTemplate 存在一个问题:繁琐,每一个请求,参数不同,请求地址不同,返回数据类型不同,其他都是一样的,所以我们希望能够对请求进行简化。

简化方案就是 OpenFeign。

Spring Cloud OpenFeign,提供 OpenFeign 集成到 Spring Boot 应用中的方式,主要解决微服务之间的调用问题。

OpenFeign 源于 Netflix Feign , 但是 Netflix 中的组件已经停止开源工作,OpenFeign 是 Spring Cloud 团队在 Netflix Feign 的基础上开发出来的声明式服务调用组件。

一个 Hello 示例

继续使用之前的 provider。

新建一个 Spring Boot 模块,创建时,选择 OpenFeign 依赖,如下:

项目创建成功后,在 application.properties 中进行配置,将其注册到eureka 中:

spring.application.name=openfeign
server.port=4000
eureka.client.service-url.defaultZone = http://localhost:1111/eureka

接下来 ,在启动类上添加注解,开启 Feign 的支持:

@SpringBootApplication
@EnableFeignClients
public class OpenfeignApplication {

    public static void main(String[] args) {
        SpringApplication.run(OpenfeignApplication.class, args);
    }

}

接下来,定义 HelloService 接口,去使用 OpenFeign:

@FeignClient("provider") // 调用的服务名
public interface HelloService {

    @GetMapping("/hello")
    String hello(); // 这里的方法名随意取
}

最后调用 HelloController ,对 HelloService 进行测试:

@RestController
public class HelloController {
    @Autowired
    HelloService helloService;

    @GetMapping("/hello")
    public String hello(){
        return helloService.hello();
    }
}

先启动注册中心 eureka

再启动 provider

最后启动 openfeign

打开 eureka 的后台 http://localhost:1111/:

可以看到,openfeign 和 provider 都注册到 eureka 上了。

再访问 http://localhost:4000/hello , 效果如下:

ok!

每天学习一点点,每天进步一点点。

posted @ 2020-08-08 16:33  爱吃西瓜的番茄酱  阅读(205)  评论(0编辑  收藏  举报