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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)