黄埔区网站建设,数据展示网站模板,建设电子商务网站所应用的技术,松江做微网站Feign简介
Feign是声明式Web Service客户端#xff0c;它让微服务之间的调用变得更简单#xff0c;类似controller调用service。SpringCloud集成了Ribbon和Eureka#xff0c;可以使用Feigin提供负载均衡的http客户端
只需要创建一个接口#xff0c;然后添加注解即可。使用…Feign简介
Feign是声明式Web Service客户端它让微服务之间的调用变得更简单类似controller调用service。SpringCloud集成了Ribbon和Eureka可以使用Feigin提供负载均衡的http客户端
只需要创建一个接口然后添加注解即可。使用接口方式调用服务
Feign主要是社区版大家都习惯面向接口编程。这个是很多开发人员的规范。调用微服务访问两种方法
1.微服务名字 ribbon
2.接口和注解 feign
Feign的作用
Feign旨在使编写Java Http客户端变得更容易前面在使用Ribbon RestTemplate时利用RestTemplate对Http请求的封装处理形成了一套模板化的调用方法。但是在实际开发中由于对服务依赖的调用可能不止一处往往一个接口会被多处调用所以通常都会针对每个微服务自行封装一个客户端类来包装这些依赖服务的调用。所以Feign在此基础上做了进一步的封装由他来帮助我们定义和实现依赖服务接口的定义在Feign的实现下我们只需要创建一个接口并使用注解的方式来配置它 (类似以前Dao接口上标注Mapper注解现在是一个微服务接口上面标注一个Feign注解)即可完成对服务提供方的接口绑定简化了使用Spring Cloud Ribbon 时自动封装服务调用客户端的开发量。
Feign默认集成了Ribbon
利用Ribbon维护了MicroServiceCloud-Dept的服务列表信息并且通过轮询实现了客户端的负载均衡而与Ribbon不同的是通过Feign只需要定义服务绑定接口且以声明式的方法优雅而简单的实现了服务调用。
Ribbon和Feign的区别
Ribbon和Feign都是用于调用其他服务的不过方式不同。Ribbon RestFul风格Feign 面向接口
启动类使用的注解不同Ribbon用的是RibbonClientFeign用的是EnableFeignClients。服务的指定位置不同Ribbon是在RibbonClient注解上声明Feign则是在定义抽象方法的接口中使用FeignClient声明。调用方式不同Ribbon需要自己构建http请求模拟http请求然后使用RestTemplate发送给其他服务步骤相当繁琐。Feign则是在Ribbon的基础上进行了一次改进采用接口的方式将需要调用的其他服务的方法定义成抽象方法即可不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。 Feign使用接口方法调用服务
创建springcloud-api-feignmaven项目导入springcloud-api所有内容。
导入Feign依赖 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-feign/artifactIdversion1.4.6.RELEASE/version/dependency
在service中创建DeptClientService
FeignClient(value SPRINGCLOUD-PROVIDER-DEPT)
public interface DeptClientService {GetMapping(/dept/getlist)public ListRUser get();
}新创建maven项目 springcloud-consumer-dept-feign,复制springcloud-consumer-dept-80项目的所有内容更改启动类名称为FeignDeptConsumer_80
导入feign依赖 dependencygroupIdorg.example/groupIdartifactIdspringcloud-api/artifactIdversion1.0-SNAPSHOT/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-eureka/artifactIdversion1.4.6.RELEASE/version/dependency!--Ribbon--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-ribbon/artifactIdversion1.4.6.RELEASE/version/dependencyDeptConsumerController
RestController
public class DeptConsumerController {//Feign面向接口编程//springcloud-api-feign 下的serviceAutowiredprivate DeptClientService deptClientService null;RequestMapping(/consumer/getlist)public ListRUser get(){return deptClientService.get();
}
在DeptConsumer_feign启动类加上Feign相关注解 SpringBootApplication
EnableEurekaClient //在服务启动后自动注册到Eureka注册中心中
EnableFeignClients(basePackages {com.zlt.springCloud}) //Feign被扫描到
public class DeptConsumer_feign {public static void main(String[] args) {SpringApplication.run(DeptConsumer_feign.class,args);}
}启动注册中心启动服务提供者启动当前端口。运行浏览器根据控制器配置的路径访问运行没问题完成!