博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java应用与HTTP服务之间的粘合剂OpenFeign详解
阅读量:4178 次
发布时间:2019-05-26

本文共 1587 字,大约阅读时间需要 5 分钟。

OpenFeign曾用名Netflix Feign,最新版本是2018.5发布的9.7.0。

OpenFeign是Java应用中编写Web服务的客户端的利器,基于第三方HTTP客户端类库,声明式地构建Web服务的客户端应用,以调用Web服务。OpenFeign在Java应用中,负责处理与远程Web服务的请求响应,最大限度降低编码复杂性。

1. HTTP客户端类库

OpenFeign默认使用Java的HttpURLConnection作为HTTP请求客户端。

OpenFeign也可以使用类似Jersey/CXF的HTTP客户端类库,编写Java客户端以访问HTTP服务。

OpenFeign也可以直接使用已有公共第三方HTTP客户端类库,如Apache HttpComponents, OKHttp,编写Java客户端以访问HTTP服务。

2. JSON编解码类库

OpenFeign可以采用支持Jackson, Gson两种JSON编解码类库,JSON编解码用法如下:

Feign.builder().encoder(new GsonEncoder())Feign.builder().decoder(new GsonDecoder())Feign.builder().encoder(new JacksonEncoder())Feign.builder().decoder(new JacksonDecoder())

3. XML编解码类库

OpenFeign支持JAXB规范的XML编解码类库,用法如下:

Feign.builder().encoder(new JAXBEncoder())Feign.builder().decoder(new JAXBDecoder())

4. 集成Apache HttpComponents HttpClient

Feign.builder().client(new ApacheHttpClient())

5. 集成OKHttp

Feign.builder().client(new OkHttpClient()).target(...)

6. 集成Ribbon

Feign.builder().client(RibbonClient.create()).target(...)

7. 集成Hystrix

HystrixFeign.builder().target(...)

8. 应用示例

1) 在Java应用中定义远程HTTP服务接口

public interface BaiduService {	@RequestLine("GET /{owner}/editors/{lastName}")	List
editors(@Param("owner") String owner, @Param("lastName") String lastName);}

2) 在Java应用中定义对象模型

只需要给出属性

public class Editor {    String name;}//a model, no constructor, no getter/setter

3) 在Java应用中定义HTTP服务对象,并发出HTTP请求

BaiduService server = Feign.builder()    .decoder(new GsonDecoder())    .target(BaiduService.class, "https://www.baidu.com");List
editorsHan = server.editors("champagne", "Han");

 

参考链接:

https://github.com/OpenFeign/feign

 

转载地址:http://mmlai.baihongyu.com/

你可能感兴趣的文章
SpringBoot | 使用FastJson序列化整合Cache实现Redis缓存
查看>>
SpringBoot | 整合CacheEHCACHE
查看>>
Chrome添加调试机型
查看>>
Mysql手动提交事务
查看>>
Spring计时器StopWatch的使用
查看>>
LockSupport中的park() 和 unpark()与Object中的wait()和notify()
查看>>
Java并发| CountDownLatch、Semaphore和CyclicBarrier
查看>>
Spring的BeanUtils的copyProperties方法使用注意事项
查看>>
JAVA8 stream
查看>>
SpringBoot | 异步编程
查看>>
Java并发| Exchanger和Phaser
查看>>
IDEA RESTful Client 数据请求
查看>>
轻松读懂字节码文件
查看>>
记一下对String#intern的理解
查看>>
Tomcat多种方式部署多个项目
查看>>
随机字符串
查看>>
ZipUtils工具类
查看>>
1071 - Specified key was too long; max key length is 767 bytes
查看>>
SQLSERVER的LOG文件过于庞大
查看>>
Mycat+SpringBoot完成分库分表
查看>>