网站首页 > java教程 正文
一、前言
但在大部分用例开发环境下,添加额外配置是无所避免的,比如自定义应用端口号、服务地址、数据库的配置等,都或多或少的需要一些外部的配置项等。
在前文中我们有详细介绍在接口测试框架中如何基于 SpringBoot 快速搭建多环境配置,本文将在原有的基础上介绍集成如何快速读取配置文件的值。
二、配置文件简要说明
SpringBoot 默认的全局配置文件名为 application.properties 或 application.yml (spring官方推荐使用的格式是 .yml 格式),程序启动时会自动加载此文件,无需手动引入。 除此之外还有一个 bootstrap 的全局文件,它是在 application 配置文件之前加载,主要是用于在应用程序上下文的引导阶段,在后 SpringCloud时,主要是利用此特性,进行配置文件的动态修改,在此 我们演示application.properties 配置。
三、Demo 演示
这次在多环境配置的 demo 的基础进行扩展。
1、自定义属性值
filter-dev.properties 配置文件增加自定义属性,比如:
host=http://127.0.0.1
port=8082
application-dev.properties 增加配置项:
Server.host=${host}
Server.port=${port}
2、新建配置实体类
我们可以通过两种方式配置绑定对象。
第一种方式:@Value() 方式 在类域属性上通过 @Value("${xxx}") 指定关联属性, SpringBoot 会自动加载。 @Component 注解使其在启动时被自动扫描到。
package com.zuozewei.springboot.model;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* 描述:
* 配置文件实体类
*
* @author zuozewei
* @create 2019-12-20 16:15
*/
@Component
@Data
public class Configurations1 {
@Value("${Server.host}")
private String host;
@Value("${Server.port}")
private String port;
}
第二种方式:@ConfigurationProperties 属性
手动书写 @Value 注解还是比较繁重的工作,好在 SpringBoot 提供了更简洁的方式。@ConfigurationProperties(prefix = "Server")。prefix 指定了配置文件的前缀为 Server,并且按照属性名进行自动匹配。 例如:Server.host属性值会自动加载到 private String host 域中。
package com.zuozewei.springboot.model;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 描述:
* 配置文件实体类
*
* @author zuozewei
* @create 2019-12-20 16:15
*/
@Component
@Data
@ConfigurationProperties(prefix = "Server")
public class Configurations2 {
private String host;
private String port;
}
PS:locations 还能够指定自定义的配置文件位置,这里就不多说了。
@ConfigurationProperties(prefix = "Server", locations = "classpath:xxxx.properties")
3、用例读取
编写测试用例,通过 @Autowired 注解注入 bean 调用。
package com.zuozewei.springboot.test;
import com.zuozewei.springboot.model.Configurations1;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* 描述:
* 演示测试用例1
*
* @author zuozewei
* @create 2020-01-03 11:02
*/
@SpringBootTest
@Slf4j
public class TestCase1 extends AbstractTestNGSpringContextTests {
@Autowired
private Configurations1 configurations;
@BeforeClass
public void beforeClass() {
String host = configurations.getHost();
String port = configurations.getPort();
String url = host +":"+ port;
log.info("URL:" + url );
}
@Test
public void test(){
log.info("TestCase run...");
}
}
注意:
- SpringBoot 中读取配置文件不能放到 @BeforeSuite 注解,否则会导致 @Autowired 不能加载 Bean;
- SpringBoot 中使用 TestNg 必须加上 @SpringBootTest,并且继承 AbstractTestNGSpringContextTests,如果不继承AbstractTestNGSpringContextTests,会导致 @Autowired 不能加载 Bean。
4、测试验证
最好跑测看下结果,我们可以看到配置文件读取成功:
四、小结
测试框架使用 SpingBoot 读取配置文件比我们传统方式要简单很多,上述我们主要介绍了过两种方式配置绑定对象:
- @Value() 注解;
- @ConfigurationProperties 属性;
最后在测试用例开发中,结合@Autowired 注解注入 bean 调用读取即可。
希望本文对你有所启发。
示例代码:
- https://github.com/zuozewei/blog-example/tree/master/Java-api-test/01-data-driven/springboot-configuration-demo
- 上一篇: 收藏|Java获取文件类型的5种方法
- 下一篇: 如何在Java中读取超过内存大小的文件
猜你喜欢
- 2024-11-19 Java 添加、读取和删除 Excel 批注
- 2024-11-19 Java 获取PDF文档中的图片的坐标信息
- 2024-11-19 Java如何获取一个文本文件的编码(格式)信息呢?
- 2024-11-19 Java 查找和高亮显示Word文本
- 2024-11-19 JVM Thread Dump 文件分析
- 2024-11-19 java web项目打成jar包运行后工具类无法读取模板文件的解决方法
- 2024-11-19 java获取到heapdump文件后,如何快速分析?
- 2024-11-19 Java 用注解实现通用功能-csv文件的读取为例
- 2024-11-19 从零学大数据之Java篇第二十五章:文件操作详解
- 2024-11-19 Java,通过文件获取MimeType的方式,文件扩展名获取ContentType
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)