问题的引出
RestTemplate 是spring提供的访问rest接口的类,RestTemplate提供了多种便捷访问http服务的方法,使得调用rest接口更容易,记得在以前的代码中发送http请求我们还使用 HttpClient 或者 OkHttp 但其有如下的问题
- 代码复杂
- 需要操心资源回收等细节问题
- 每个项目组都有自己的一套http工具类,重复造轮子
现在我基本上用RestTemplate代替了以前自己写的工具类。
本文不讲RestTemplate的普遍使用方法,而是讲在非springboot工程中如何使用RestTemplate
那为什么会有这样的场景呢?举个例子:我们要开发一个jar包提供给其他人,并集成到别人的工程中使用,该jar包封装对某短信接口的请求细节,别人只需要引入我们的jar包然后调用相关类即可,不用关心具体的http请求细节,因为我们提供的是一个很小的jar包,而不是一个完整的工程,所以再去用springboot那套就不合适了。
大部分情况下我们的工程都是基于springboot或者spring系的,使用RestTemplate很简单,直接自动注入即可。
那在脱离了spring系的工程中我们还能开心的使用RestTemplate么?
在非springboot工程中使用RestTemplate
步骤 pom.xml 中添加依赖
1 | <dependency> |
步骤 代码中使用
1 | RestTemplate restTemplate=new RestTemplate(); |
以前spring帮我们初始化RestTemplate,现在我们需要自己new 对象了,其它使用方式没有区别。
关于初始化RestTemplate的说明
1 | RestTemplate restTemplate = new RestTemplate(); |
实际上RestTemplate自己并不实现具体的http操作,其只是对已有类库进行了封装,而其具体实现仍然依赖底层的类库
- 上面第一种初始化方法 其使用JDK自带的 HttpURLConnection
- 第二种初始化方法 使用的是 HttpClient 库
- 第三种初始化方法 使用的是 OkHttp 库
所以如果对具体使用的类库有要求的话,应该在初始化时指定具体的工厂类,当然还需要添加相关的依赖
1 | <dependency> |
微信端的朋友也可关注我的公众号
小马向前走
