SpringCloud Netflix---Feigin服务调用

SpringCloud Netflix---Feigin服务调用,第1张

1. 什么是Feigin

       Feigin是SpringCloud NetFlix中一个声明式(就像调用本地方法一样调用远程方法)的web service客户端,可以让微服务之间的调用变得更加简单,可以让我们像调用接口一样去调用远程的一些方法,这样子更加符合我们Java开发中的面向接口开发的特性,也更加方便。

2. Feigin作用

       Feigin的主要目的是让我们在编写Java Http客户端时更加方便。

       在没有使用Feigin之前,我们通常是通过Ribbon+RestTemplate来访问远程方法,利用RestTemplate对Http请求的封装处理,形成一套模板化的调用方法(里面包括了RestFul风格的一些请求方法,如:get,post等)。

       这个方式的特点在于:这样子调用更加接近我们的restful风格访问,但由于在实际的开发中,服务之间的依赖不止一处,往往出现一个接口多处调用的现象,所以开发人员通常会自己封装客户端。

       Feigin的作用就是用来更加方便的封装我们的客户端,而且更加方便简单,只需要在相关的微服务接口上进行标注即可。

       Feigin同时对Ribbon,Hystrix等组件也进行了封装。

3. 简单使用

       1.创建服务注册中心,服务提供者,服务消费者等相关服务信息,详细情况可参考上篇:https://blog.csdn.net/I_am_fine_/article/details/124284141

       2.配置相关的信息代码:主要在服务消费者中配置

pom依赖导入: 导入Feigin依赖


<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-feignartifactId>
    <version>1.4.6.RELEASEversion>
dependency>

新建ServerProvideFeigin接口:

package com.example.feigin;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;

@Component
@FeignClient(value = "SERVER-PROVIDER")
public interface ServerProvideFeigin {

    //定义服务提供者所提供的接口(controller层,注意:访问地址和接口名要一致)
    //就是说可以使用http://SERVER-PROVIDER/test地址来访问到远程服务的方法
    @GetMapping("/test")
    public String test();
}

配置启动类: 添加Feigin客户端,声明扫描路径

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignClient;

@SpringBootApplication
@EnableDiscoveryClient
@EnableEurekaClient
@EnableFeignClients(value = "com.example.feigin")
public class ServerCustomerFirst8085Application {

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

}

新建测试类:

package com.example.test;

import com.example.feigin.ServerProvideFeigin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class FeiginController {

    @Autowired
    private ServerProvideFeigin feigin;

    @GetMapping("/test02")
    public String test(){
        return (String) feigin.test();
    }
}

测试结果: 访问http://localhost:8085/test02

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/720004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存