栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jvm-Sandbox-Repeater 新增配置详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jvm-Sandbox-Repeater 新增配置详解

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

Step1:配置表结构信息

CREATE TABLE `module_config` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `gmt_create` DATETIME NOT NULL COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL COMMENT '录制时间',
  `app_name` VARCHAr(255) NOT NULL COMMENT '应用名',
  `environment` VARCHAr(255) NOT NULL COMMENT '环境信息',
  `config` LONGTEXT NOT NULL COMMENT '配置信息',
  PRIMARY KEY (`id`)
) 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));
  1. HTML内容

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

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自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:


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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/342939.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号