• 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!

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

  • 相关阅读:
    idea的alt+enter可以从菜单点吗
    idea能用下划线替换红色报错吗?我色弱,用idea简直太痛苦了
    Idea中JDK为1.8,还提示Diamond types are not supported at this language level
    idea中maven项目下载源码的方式的
    kafka删除topic后再创建同名的topic报错(ERROR org.apache.kafka.common.errors.TopicExistsException)
    Linux虚拟机的命令分发工具。
    关于git SSH Key的 生成
    Windows下Nginx+Mysql+Php(wnmp)环境搭建
    HTTP协议详解
    php面向对象中static静态属性和静态方法的调用
  • 原文地址:https://www.cnblogs.com/youcoding/p/13441084.html
Copyright © 2020-2023  润新知