• Jvm-Sandbox-Repeater 新增配置详解


    今日主题:Jvm-Sandbox-Repeater 这个流量录制回放工具里面的 Console 模块里面的新增配置是如何实现的。

    Step1:配置表结构信息

    1 CREATE TABLE `module_config` (
    2   `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    3   `gmt_create` DATETIME NOT NULL COMMENT '创建时间',
    4   `gmt_modified` DATETIME NOT NULL COMMENT '录制时间',
    5   `app_name` VARCHAR(255) NOT NULL COMMENT '应用名',
    6   `environment` VARCHAR(255) NOT NULL COMMENT '环境信息',
    7   `config` LONGTEXT NOT NULL COMMENT '配置信息',
    8   PRIMARY KEY (`id`)
    9 ) ENGINE=INNODB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='模块配置信息';

    Step2:配置表结构对应的实体类

    基于step1 & step2的代码逻辑,我们再来看看一些概念定义:

    1. JPA(Java Persistence API)

    是 Java 标准中的一套 ORM 规范,借助 JPA 技术可以通过注解或者 XML 描述(对象-关系表)之间的映射关系,并将实体对象持久化到数据库中(即Object Model 与 Data Model 间的映射)。

    2. Spring Data JPA

    是 Spring 提供的一套简化 JPA 开发的框架(Criteria API还是太复杂了),按照约定好的方法命名规则写 dao 层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。

    3. @Entity、@Table、@Column 、@Id、@GeneratedValue

    Step2中的代码,通过 JPA 定义的 Object 时使用到了@Entity、@Table、@Column 、@Id、@GeneratedValue 等注解。

    解释分别如下:

    • @Entity:标注用于实体类声明语句之前,指出该 Java 类为实体类,将映射到指定的关系数据库表。
    • @Table:当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用(name属性:指定表名,不知道时表名为类名)
    • @Id: 标注用于声明一个实体类的属性映射为数据库的一个主键列
    • @GeneratedValue: 用于标注主键的生成策略,通过 strategy 属性指定。
    • @Column:此注解不是必须的,无此字段也会将字段映射到表列。当实体的属性与其映射的数据库表的列不同名时需要使用 @Column 标注说明(类的字段名在数据库中对应的字段名可以通过此注解的 name 属性指定)。

    Step3:interface 定义

    备注:@Repository 用来表示一个持久层 bean,即数据访问层DAO组件。所以findByAppNameAndEnvironment() 这个方法不用写它的实现类去 @Override 这个方法,就可以直接拿来使用,下文中有调用到它的地方。

    Step4:点击【新增配置】按钮

    执行如下代码:

     

    代码说明:

    1. 往前台web页面传数据

    model.addAttribute("config", JacksonUtil.serialize(defaultConf));

      2.HTML内容

       3.代码里面都是一些写死的默认配置信息

    Web页面展示如下:

    Step5:点击【保存】按钮

    1.首先请求到这里:

     

     2.其次调用:

     3.最后调用到实现类:

     moduleConfigDao.query(params) 调用到了 Step3 中接口定义的方法:

     接下来判断是否在表里面查找到了相应的配置,如果不为 null 就重新赋值,如果为 null 就重新实例化 ModuleConfig 类实例,最后进行调 saveOrUpdate() 方法进行保存入库。

     最终调用到了saveAndFlush()方法,这是框架自带的方法:(源码如下)

    Step6:查询数据库

    备注:app_name and environment 这里在提交时填写的是 unknown,这是为了让 repeater-client 来 pull config 数据时能够匹配得上而做的相应设置。

    欢迎关注【无量测试之道】公众号,回复【领取资源】
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、
    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:


    添加关注,让我们一起共同成长!

  • 相关阅读:
    目前游戏行业内部主要几款游戏引擎的技术对比(转)
    Windows平台下为Python添加MongoDB支持PyMongo
    Android_ContentProvider
    Android 手风琴效果实现
    SQLiteOpenHelper与SQLiteDatabase
    sqlite基础语法
    关于Android studio git Authentication failed
    Android 6.0动态权限获取
    Android_数据存储
    Android_CardView
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/15438768.html
Copyright © 2020-2023  润新知