ResetTemplate封装
最近忙,废话就不多说了,直接上代码,接口类
public interface ResetTemplateService {/*** 发送POST请求,请求体携带参数* @param url* @param params*/<T> T postWithBody(String url, Map<String,String> params,Class<T> tClass);/*** 发送POST请求,请求体携带参数,添加请求头* @param url* @param params* @param headers*/<T> T postWithBody(String url,Map<String,String> params,Map<String,String> headers,Class<T> tClass);/*** 发送POST请求,FORM表单的形式* @param url* @param params*/<T> T postWithForm(String url,MultiValueMap<String,String> params,Class<T> tClass);/*** 发送POST请求,FORM表单的形式,添加请求头* @param url* @param params* @param headers*/<T> T postWithForm(String url, MultiValueMap<String, String> params, Map<String,String> headers,Class<T> tClass);/*** 无参数POST请求* @param url*/<T> T postWithForm(String url,Class<T> tClass);/*** 发送GET请求* @param url* @param params*/<T> T getWithParams(String url,Map<String,String> params,Class<T> tClass);/*** 发送GET请求* @param url*/<T> T getWithNoParams(String url,Class<T> tClass);/*** 发送GET请求,RESTFUL* @param url* @param params* @return*/<T> T getWithPathViable(String url,Map<String,String> params,Class<T> tClass);
实现类处理
public class ResetTemplateServiceImpl implements ResetTemplateService {private RestTemplate restTemplate;public void setRestTemplate(RestTemplate restTemplate) {this.restTemplate = restTemplate;}@Overridepublic <T> T postWithBody(String url, Map<String, String> params,Class<T> tClass) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(params),headers);ResponseEntity<T> exchange = restTemplate.exchange(url, HttpMethod.POST,entity,tClass);return exchange.getBody();}@Overridepublic <T> T postWithBody(String url, Map<String, String> params, Map<String, String> newHeaders,Class<T> tClass) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);newHeaders.forEach((key,value)->{headers.set(key,value);});HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(params),headers);ResponseEntity<T> exchange = restTemplate.exchange(url, HttpMethod.POST,entity,tClass);return exchange.getBody();}@Overridepublic <T> T postWithForm(String url, MultiValueMap<String, String> params,Class<T> tClass) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(params,headers);ResponseEntity<T> exchange = restTemplate.exchange(url, HttpMethod.POST,entity,tClass);return exchange.getBody();}@Overridepublic <T> T postWithForm(String url, MultiValueMap<String, String> params, Map<String, String> newHeaders,Class<T> tClass) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);newHeaders.forEach((key,value)->{headers.set(key,value);});HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(params,headers);ResponseEntity<T> exchange = restTemplate.exchange(url, HttpMethod.POST,entity,tClass);return exchange.getBody();}@Overridepublic <T> T postWithForm(String url,Class<T> tClass) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);ResponseEntity<T> exchange = restTemplate.exchange(url, HttpMethod.POST,null,tClass);return exchange.getBody();}@Overridepublic <T> T getWithParams(String url, Map<String, String> params,Class<T> tClass) {if(params==null){return getWithNoParams(url,tClass);}return restTemplate.getForObject(getParamUrl(url,params),tClass);}@Overridepublic <T> T getWithNoParams(String url,Class<T> tClass) {return restTemplate.getForObject(url,tClass);}@Overridepublic <T> T getWithPathViable(String url, Map<String, String> params,Class<T> tClass) {return restTemplate.getForObject(url,tClass,params);}/**** @param url* @param params* @return*/private String getParamUrl(String url,Map<String, String> params){Iterator<Map.Entry<String,String>> it = params.entrySet().iterator();while(it.hasNext()){Map.Entry<String,String> entry= it.next();String key = entry.getKey();String value= entry.getValue();if(url.indexOf("\\?")==-1){url = url+"?"+key+"="+value;}else{url = url+"&"+key+"="+value;}}return url;}}
注解实例化
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Import(ResetTemplateConfig.class)
public @interface EnableResetTemplate {
}
public class ResetTemplateConfig {@Autowiredprivate RestTemplateBuilder builder;// 使用RestTemplateBuilder来实例化RestTemplate对象,spring默认已经注入了RestTemplateBuilder实例@Beanpublic RestTemplate restTemplate() {return builder.build();}@Beanpublic ResetTemplateService resetTemplateService(){ResetTemplateServiceImpl resetTemplateService = new ResetTemplateServiceImpl();resetTemplateService.setRestTemplate(restTemplate());return resetTemplateService;}}
在启动类上增加相应的注解,就可以全局调用和注入了
ResetTemplate封装相关推荐
- IDEA中将代码块封装为方法,IDEA代码重构快捷键
IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:
- 2022-2028年中国封装用胶膜行业运营现状及投资发展潜力报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了封装用胶膜行业相关概述.中国封装用胶膜行业运行环境.分析了中国封装用 ...
- 第十六节,使用函数封装库tf.contrib.layers
目录 一 tf.contrib.layers中的具体函数介绍 1.tf.contrib.layers.conv2d()函数的定义如下: 2.tf.contrib.layers.max_pool2d() ...
- 薄膜封装,等离子体技术,原子层沉积,化学气相沉积
薄膜封装,等离子体技术,原子层沉积,化学气相沉积 薄膜封装 薄膜封装概念 薄膜真空沉积的一个很重要的技术应用就是薄膜封装.人们对薄膜封装最简单的认识就是日常生活中最常见的保鲜膜,水氧渗透率大约是1-1 ...
- 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?
OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...
- Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
## 多态 ```python OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态 多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变, ...
- 09_Java面向对象_第9天(类、封装)_讲义
今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 A: 面向过程与面向对 ...
- Appium的Java封装
文章出处 http://blog.csdn.net/niubitianping/article/details/52612211 一.为什么需要封装? 封装的本意就是为了方便.简洁. 二.Androi ...
- Go 学习笔记(36)— 基于Go方法的面向对象(封装、继承、多态)
Go 面向对象编程的三大特性:封装.继承和多态. 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式 继承:使得子类具有父类的属性和方法或者重新定义.追加属性和方法等 多态:不同对象中同种行为的不 ...
最新文章
- 02-CoreData 的增删改查
- 构建未来情报体系—— AI及大数据时代情报分析人员的战略价值
- 华为云BU总裁:如何把AI从噱头变为生产力?
- phoneinfo界面翻译_phone info +下载-三星验机神器phone info samsung下载v3.6.4 安卓版-西西软件下载...
- java中的jackson_Java中的JSON数据绑定框架Jackson使用介绍
- aswing学习笔记2-不规则外框-请教思路
- Testbench编写方法
- java手游服务开发_jforgame,一个用java编写的轻量级手游服务端框架
- 计算机怎样打开鼠标点的键盘,电脑软键盘怎么打?
- java表格边框问题_Java 设置Word表格边框
- python爬虫获取维基百科词条
- keras实现交叉验证以及K折交叉验证
- 南方都市报:红心照耀MSN
- 【四二学堂】H5手机游戏-梅花易数一撮金(游戏开发系列微课之一)
- 【耀杨闯荡华儿街】(面试官)曹阿门:给我讲讲多线程;耀杨:md心态崩了~
- Redis与传统sql数据库的区别
- 【转】常用的隧道技术
- CToolBar的使用总结
- 软件测试 查看网页打开时间,网页响应时间101(三)
- 中级微观经济学:Chap 31 行为经济学