springcloud(第八篇)springcloud feign
来源:互联网 发布:课时优化八上英语答案 编辑:程序博客网 时间:2024/05/16 11:54
# spring cloud feign
introduction
netflix feign
是一个类似retrofit
进行http调用框架,Feign makes writing Java http clients easier
使得编写http client
代码更加简单
netflix feign
直接给出一段简单的案例
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
1.首先定义接口GitHub
,使用注解RequestLine
表明contributors()
方法为一个get
请求,请求相对为/repos/{owner}/{repo}/contributors
2.Decoder decoder = new GsonDecoder();
创建一个GsonDecoder
解码器,表明通过Gson
解析返回数据
3.decoder()
方法设置解码器
4.errorDecoder()
指定发生异常时的解码器,需要实现ErrorDecoder
接口,覆写decode
方法,通过指定的Decoder
解析错误信息,这里还是使用GsonDecoder
5.logger 相关的表示配置日志系你系
6.target()
方法指定访问url以及返回的类型
7.通过创建的github
对象调用contributors
获取结果
8.模拟异常情况
note: feign
使用起来很简单,其原理和retrofit
及其类似,通过接口定义访问访问,用jdk的动态代理创建接口的实现类,在类中解析方法上的注解信息用以识别用户配置的http请求信息,然后执行请求;
feign可以通过ReflectiveFeign
下的newInstance()
方法看到
- 1
- 2
- 3
- 1
- 2
- 3
spring cloud feign
spring cloud feign
通过注解的封装使用起来更加简单
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
注解EnableFeignClients
表明需要扫描使用FeignClient
注解的接口,在代码中定义了@FeignClient(url = "https://api.github.com")
表明该接口为一个feign接口
通过url
指定访问路径RequestMapping
表明相对路径
在代码中注入beanGitHub
,直接调用其中申明的方法即可。
重点说明下FeignClient
注解
该注解表示申明创建一个rest client bean,可以直接通过Autowired
注入使用,如果ribbon在工程中启用,则会使用load balance
进行后端请求调用,可以为FeignClient
指定value表明需要访问的serviceId
feign + ribbon + eureka
在springcloud(第七篇)springcloud ribbon with eureka中讲解了ribbon+eureka,其中使用RestTemplate
进行调用,也可以通过 feign
调用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
使用@FeignClient("simple")
指定要访问的service id
由于hello()
对应的mapping为@RequestMapping(value = "/", method = GET)
那么该方法实际调用url为 http://simple/
,因此在执行
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
调用的为SimpleApplication.java
中
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
ok ~ it’s work ! more about is here
- springcloud(第八篇)springcloud feign
- springcloud(第八篇)springcloud feign
- SpringCloud第三篇-Feign
- SpringCloud(六)springcloud feign
- springcloud记录篇3-springcloud客户端ribbon和feign
- springcloud feign 讲解
- springcloud中的feign使用
- Springcloud consul + ribbon\feign
- SpringCloud--服务消费者(Feign)
- SPRINGCLOUD(EUREKA+RIBBON+FEIGN+HYSTRIX)
- SpringCloud: 服务消费者(Feign)
- SpringCloud之Feign(一)
- SpringCloud之Feign(二)
- springcloud之Feign基本使用
- SpringCloud教程 | 第三篇: 服务消费者(Feign)
- SpringCloud教程 | 第三篇: 服务消费者(Feign)
- SpringCloud 教程 | 第三篇: 服务消费者(Feign)
- SpringCloud教程 | 第三篇: 服务消费者(Feign)
- Spring的入门教程(1)
- ubuntu 安装中文输入法
- 纳税服务系统【投诉受理管理,显示投诉信息、处理回复、我要投诉】
- JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence
- Spring 架构篇——使用 Spring Boot Actuator 监控端点
- springcloud(第八篇)springcloud feign
- 【XML】将String格式的XML文件转化成JAVA实体类
- 算法笔记--排列组合
- HDU 2071 Max Num
- 二分搜索—— 完全二叉树统计节点个数
- LeetCode 563 Binary Tree Tilt(递归 + 中间结果保存)
- PythonTip 50道题目(部分题解)
- nefuoj1206-dp-环形子段和
- Java Integer的缓存问题