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环境中,在生产环境里,将使用真正的服务。

感谢各位阅读!

原文地址:https://www.cnblogs.com/lori/p/9166351.html

时间: 2024-11-06 03:47:55

springboot~openfeign从JSON文件读取数据的相关文章

通过jquery,从json中读取数据追加到html中

1.下载安装jquery 可通过下面的方法引入在线版本的js: <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> 参考安装文档:http://www.runoob.com/jquery/jquery-install.html 2.准备一个json格式的文件,后缀可以不是.json 例如下面是result.json的格式 {    "title&q

Ajax获取 Json文件提取数据

摘自 Ajax获取 Json文件提取数据 1. json文件内容(item.json) [ { "name":"张国立", "sex":"男", "email":"[email protected]", "url":"./img/1.jpg" }, { "name":"张铁林", "sex"

14.json文件读取

json文件读取 1.#读取json import json str='''[ { "name":"Tom", "gender":"male", "birth":"1997-12-13" }, { "name": "Jerry", "gender": "male", "birth": &q

由已打开的文件读取数据---read

头文件:#include<unistd.h> 函数原型:ssize_t read(int fd,void *buf,size_t count); 参数说明:fd:文件描述符 buf:存放读取数据的缓冲区. count:读取的最大长度 返回值:成功则返回读取的字节数,失败则返回-1.

My Game --文件读取数据

My Game --线段数据 中说到背景的绘制由贝赛尔曲线生成线段,用 DrawNode 画多边形,同时一张背景有两座山,一座山有两条以上贝赛尔曲线保存,用了嵌套的数据类:Bezier,LineLayer,BgLayerData 这个做也是为了方便从文件读取数据 把背景的数据放在文件里方便修改,也可以做个工具快速绘制背景,下面是这个背景的数据保存的XML文件: 1 <RootLayer> 2 <Layers> 3 <layer> 4 <Beziers> 5

C#实现从EXCEL文件读取数据到SqlServer数据库

用第三方组件:NPOI组件实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写. 先创建一个实体类: [Table("Customer") ] public class Customer { [Key] public int Id { get; set; } public

java实现服务端守护进程来监听客户端通过上传json文件写数据到hbase中

1.项目介绍: 由于大数据部门涉及到其他部门将数据传到数据中心,大部分公司采用的方式是用json文件的方式传输,因此就需要编写服务端和客户端的小程序了.而我主要实现服务端的代码,也有相应的客户端的测试代码.这里须有一个需要提到的是,我在实现接收json文件的同时,而且还需将数据写到hbase中.写入到hbase当中采用的是批量插入的方式,即一次插入多条记录. 好了,有了前面的说明,下面来简单的说一下我实现的服务端的小程序把. 2.为了实现服务端能够监听客户端的行为,因此我在服务端采用多线程的技术

JsonResult序列化并保存json文件 以及对json文件读取反序列

项目中我们经常遇到一些经常访问的接口,并且更新及时度不是特别高,那么我们可以利用文件来做一些数据请求的缓存. 这里以微信公众号获取粉丝用户列表为例,我们把微信公众号查到的用户先缓存在文件中,这样在翻页时就不需要再重新请求接口. 获取微信粉丝用户 /// <summary> /// 用户列表 /// </summary> /// <returns></returns> public ActionResult UserList() { //页面加载时,将微信拉去

Vue-cli3.0项目下axios请求本地json文件的数据

1. Vue-cli3.0项目节省了很多文件,比如讲vue-cli3.0之前版本的build/dev-server.js配置放在了vue.config.js中. 2. 在Vue-cli3.0项目的vue.config.js或vue-cli3.0之前版本的build/dev-server.js中配置: const express = require('express')const app = express() var singer = require('./src/db/data/singer.