写点什么

SpringCloud-Feign

作者:Geek_4df958
  • 2022 年 3 月 17 日
  • 本文字数:810 字

    阅读完需:约 3 分钟

1、作用

服务远程调用。伪 PRC。

基于 http、okhttp 通信

2、使用

1、pom 文件引入依赖

<dependency>			<groupId>org.springframework.cloud</groupId>			<artifactId>spring-cloud-starter-openfeign</artifactId>		</dependency>    <!-- 引入okhttp -->    <dependency>			<groupId>io.github.openfeign</groupId>			<artifactId>feign-okhttp</artifactId>		</dependency>
复制代码

2、代码调用

2.1、客户端调用

@SpringBootApplication@EnableFeignClients//启动feignClient注解扫描动态bean装载public class CloudClientApp{
public static void main( String[] args ) { ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(CloudClientApp.class, args); configurableApplicationContext.getBean(TestDomain.class); }}@FeignClient("cloud-provider")//服务提供方服务实例名public interface ClientFeignService {
//调用的方法名uri @GetMapping("/testRemote") String testRemote();
}
复制代码

2.2、服务提供方

@RestControllerpublic class ProviderTestController {    @GetMapping("/testRemote")    private  String testRemote(){        return  this.getClass().getName();    }}
复制代码

配置 okhttp

#feign.okhttp.enabled=true#feign.httpclient.enabled=false
复制代码

3、Feign 封装的功能

1、参数解析和装载

2、针对指定的 feignClient,生成代理类

3、对 FeignClient 的方法解析

4、包装 Request 请求,发起请求,并组装返回参数

4、核心处理类和代码流程

4.1、bean 的动态装载

注解:@EnableFeignClients

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)
复制代码

org.springframework.cloud.openfeign.FeignClientsRegistrar

基于 spring 扩展,继承 ImportBeanDefinitionRegistrar,自定义 bean 包装,将 bean 装载到 IOC 容器。


发布于: 刚刚阅读数: 2
用户头像

Geek_4df958

关注

还未添加个人签名 2022.03.14 加入

还未添加个人简介

评论

发布
暂无评论
SpringCloud-Feign_Geek_4df958_InfoQ写作平台