springboot openfeign从JSON文件读取数据问题
时间:2019-04-20
本文章向大家介绍springboot openfeign从JSON文件读取数据问题,主要包括springboot openfeign从JSON文件读取数据问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对openfeign不清楚的同学可以参考下我的这篇文章:springboot~openfeign从此和httpClient说再见
对于openfeign来说,帮助我们解决了服务端调用服务端的问题,你不需要关心服务端的URI,只需要知道它在eureka里的服务名称即可,同时你与服务端确定了服务方法的参数和返回值之后,我们可以在单元测试时mock这些服务端方法即可,真正做到了单元测试,而不需要与外界资源进行交互。
今天主要说一下在openfeign里读取JSON文件的问题,我们将测试所需要的数据存储到文件里,在修改时关注点比较单纯。
JSON帮助类,主要使用了objectMapper这个对象
/** * 将json转换为对象. * * @param path 文件路径 */ public <T> T fromJson(String path, Class<T> cls) { try { return objectMapper.readValue(this.fromResource(path, Charsets.UTF_8), cls); } catch (Exception e) { throw new IllegalStateException("读取json失败:" + path, e); } } /** * 将json数组转换为对象列表. * * @param path 文件路径 */ public <T> List<T> listFromJson(String path, TypeReference typeReference) { try { return objectMapper.readValue(fromResource(path, Charsets.UTF_8), typeReference); } catch (Exception e) { throw new IllegalStateException("读取json失败:" + path, e); } }
在Mock类型中,可以使用这个方法读JSON文件的内容
@Configuration @Profile("integTest") public class ServiceClientMock { @Bean public ServiceClient registerServiceClient() { AccountClient client = mock(AccountClient.class); when(client.del( anyString(), anyString(), anyString(), anyMap())).thenReturn(fromJson("order/orders.json", Map.class)); } }
上面代码主要在模拟了ServiceClient对象里的del方法,有三个字符型输入参数,返回值从JSON文件读取,在单元测试里,直接注入的是ServiceClientMock对象,我们
可以从@Profile注解里看到,它运行在integTest环境中,在生产环境里,将使用真正的服务。
总结
以上所述是小编给大家介绍的springboot openfeign从JSON文件读取数据问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
- Java多线程详解4【面试+工作】
- Java多线程详解5【面试+工作】
- Java多线程详解6【面试+工作】
- MySQL备份恢复第二篇(r5笔记第6天)
- SpringMVC 中配置 Swagger 插件.
- MySQL和Oracle对比学习之事务(r5笔记第4天)
- 【面试宝典】Java如何打印数组
- MySQL数据导入导出牛刀小试(r5笔记第3天)
- SpringMVC 异常处理.
- 一条简单的sql在11g和12c中的不同(r5笔记第2天)
- 浅析 SpringMVC 原理和配置.
- 使用impdp不当导致的数据丢失问题(r5笔记第1天)
- MySQL数据库 Event 定时执行任务.
- Tomcat 日志分割.
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 设计模式实战-桥接模式,想做月老吗?
- 设计模式实战-原型模式,我们就来依法炮制
- 设计模式实战-建造者模式,做任何事情都需要步步为营
- 设计模式实战-单例模式,我就是天下无双
- 设计模式实战-抽象工厂模式,分而治之
- 搞定常被问的数组和排序算法,附面试题
- 玩转 Java 时间 + 面试题
- 【分布式技术】分布式系统调度架构之两层调度,解决单体调度问题
- 一致性哈希算法,在分布式开发中你必须会写,来看完整代码
- FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放
- 【Postgres扩展】pg_auto_failover支持高可用性和自动故障转移
- 「PostgreSQL」用MapReduce的方式思考,但使用SQL
- 每天百万交易的支付系统,生产环境该怎么设置JVM堆内存大小
- gb格式注释文件转换成gff3注释文件格式
- 有人问你Elasticsearch分布式架构原理,将这篇文章丢过去