最近忙,废话就不多说了,直接上代码,接口类

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封装相关推荐

  1. IDEA中将代码块封装为方法,IDEA代码重构快捷键

    IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:

  2. 2022-2028年中国封装用胶膜行业运营现状及投资发展潜力报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了封装用胶膜行业相关概述.中国封装用胶膜行业运行环境.分析了中国封装用 ...

  3. 第十六节,使用函数封装库tf.contrib.layers

    目录 一 tf.contrib.layers中的具体函数介绍 1.tf.contrib.layers.conv2d()函数的定义如下: 2.tf.contrib.layers.max_pool2d() ...

  4. 薄膜封装,等离子体技术,原子层沉积,化学气相沉积

    薄膜封装,等离子体技术,原子层沉积,化学气相沉积 薄膜封装 薄膜封装概念 薄膜真空沉积的一个很重要的技术应用就是薄膜封装.人们对薄膜封装最简单的认识就是日常生活中最常见的保鲜膜,水氧渗透率大约是1-1 ...

  5. 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?

    OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...

  6. Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...

    ## 多态 ```python OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态 多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变, ...

  7. 09_Java面向对象_第9天(类、封装)_讲义

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 A: 面向过程与面向对 ...

  8. Appium的Java封装

    文章出处 http://blog.csdn.net/niubitianping/article/details/52612211 一.为什么需要封装? 封装的本意就是为了方便.简洁. 二.Androi ...

  9. Go 学习笔记(36)— 基于Go方法的面向对象(封装、继承、多态)

    Go 面向对象编程的三大特性:封装.继承和多态. 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式 继承:使得子类具有父类的属性和方法或者重新定义.追加属性和方法等 多态:不同对象中同种行为的不 ...

最新文章

  1. 02-CoreData 的增删改查
  2. 构建未来情报体系—— AI及大数据时代情报分析人员的战略价值
  3. 华为云BU总裁:如何把AI从噱头变为生产力?
  4. phoneinfo界面翻译_phone info +下载-三星验机神器phone info samsung下载v3.6.4 安卓版-西西软件下载...
  5. java中的jackson_Java中的JSON数据绑定框架Jackson使用介绍
  6. aswing学习笔记2-不规则外框-请教思路
  7. Testbench编写方法
  8. java手游服务开发_jforgame,一个用java编写的轻量级手游服务端框架
  9. 计算机怎样打开鼠标点的键盘,电脑软键盘怎么打?
  10. java表格边框问题_Java 设置Word表格边框
  11. python爬虫获取维基百科词条
  12. keras实现交叉验证以及K折交叉验证
  13. 南方都市报:红心照耀MSN
  14. 【四二学堂】H5手机游戏-梅花易数一撮金(游戏开发系列微课之一)
  15. 【耀杨闯荡华儿街】(面试官)曹阿门:给我讲讲多线程;耀杨:md心态崩了~
  16. Redis与传统sql数据库的区别
  17. 【转】常用的隧道技术
  18. CToolBar的使用总结
  19. 软件测试 查看网页打开时间,网页响应时间101(三)
  20. 中级微观经济学:Chap 31 行为经济学

热门文章

  1. 字节跳动小程序对接环信IM遇到的问题
  2. 计算机通讯技术核心期刊有哪些,通信技术专业的核心期刊有哪些
  3. Vue.js 实战总结
  4. Linux中的/proc文件系统详解(C/C++代码实现)
  5. 基于用户的协同过滤与基于物品的协同过滤比较
  6. 回车、换行、空格的ASCII码值
  7. 【Spring】入门
  8. 手机linux系统安装
  9. linux磁盘扩容:新增磁盘、原磁盘扩容、home/root分区扩容
  10. js前端判断登录超时即清除登录状态