自定义配置类,读取Application.properties中的参数
时间:2022-07-26
本文章向大家介绍自定义配置类,读取Application.properties中的参数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
场景
在开发过程中,我们可能需要指定一些固定的参数,或者配置一些其它第三方参数。但是在后期应用中,可能需要对改内容进行不定期的修改。为了降低项目重新部署的成本。我们可以将这些内容直接当成配置写在application.yml
中,方便后期修好,同时添加一个实体类,方便读取配置参数
实际应用
1. 配置参数的添加
比如我这边对接的是华为的vcm
模块,将常用的参数配置在外面
# 自定义配置 写在最外层,不要写在任意节点下面
face:
huaweihost: https://172.19.59.241
account: admin
password: huawei@admin
uploadhost: https://172.19.59.236:18444
rootpath: E:\FileUpload\
2. 创建实体类
在项目的config
文件夹下创建HuaweiVCMConfiguration
类
// 这里根据你在配置类中最外层节点匹配查找`face`
@ConfigurationProperties(prefix = "face", ignoreUnknownFields = true)
public class HuaweiVCMConfiguration implements InitializingBean {
private String huaweihost;
private String account;
private String password;
private String uploadhost;
private String rootpath;
//错误检查 项目启动即可检查该配置内容是否读取到或者参数名称是否有错误
@Override
public void afterPropertiesSet() throws Exception {
if (StringUtils.isBlank(getHuaweihost())) {
throw new IllegalStateException("Property "face.host" cannot not be blank");
}
if (StringUtils.isBlank(getAccount())) {
throw new IllegalStateException("Property "face.account" cannot not be blank");
}
if (StringUtils.isBlank(getPassword())) {
throw new IllegalStateException("Property "face.password" cannot not be blank");
}
if (StringUtils.isBlank(getUploadhost())) {
throw new IllegalStateException("Property "face.uploadhost" cannot not be blank");
}
if (StringUtils.isBlank(getRootpath())) {
throw new IllegalStateException("Property "face.rootpath" cannot not be blank");
}
}
public String getHuaweihost() {
return huaweihost;
}
public void setHuaweihost(String huaweihost) {
this.huaweihost = huaweihost;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getUploadhost() {
return uploadhost;
}
public void setUploadhost(String uploadhost) {
this.uploadhost = uploadhost;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRootpath() {
return rootpath;
}
public void setRootpath(String rootpath) {
this.rootpath = rootpath;
}
}
3. 在启动类上面添加注解 @EnableConfigurationProperties
非常重要,这个注解不添加会报错 ,如果是单个可以直接写@EnableConfigurationProperties(HuaweiVCMConfiguration.class)
如果是多个@EnableConfigurationProperties({HuaweiVCMConfiguration.class,HuaweiVCMConfiguration.class})
4. 读取参数 (main
方法中是读不到的,必须以springboot的方式启动服务)
@Autowired
private HuaweiVCMConfiguration config;
public void test (){
String host = config.getHuaweiHost();
}
补充
可能有些人觉得这样写比较麻烦,但是代码维护起来是很方便的,代码整洁度很高.当然你可以直接采用注解的方式去读取配置内容比如
@Value("${face.huaweihost}")
private static final String host
//这样可取 但是不可避免的会出现书写错误 代码优雅度也没有那么高 如果参数比较多
- 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 数组属性和方法
- Android利用Paint自定义View实现进度条控件方法示例
- 前端科普系列(5):ESLint - 守住优雅的护城河
- 图的储存方式,链式前向星最简单实现方式 (边集数组)
- 技术前刊:PostgreSQL12 COPY和bulkloading提升
- 疯子的算法总结(八) 最短路算法+模板
- POJ - 2387 Til the Cows Come Home (最短路入门)
- POJ - 3074 Sudoku (搜索)剪枝+位运算优化
- C语言rand随机函数问题
- HDU - 1253 胜利大逃亡(搜索)
- Android7.0版本影响开发的改进分析
- POJ - 2251 Dungeon Master(搜索)
- An Overview of PostgreSQL & MySQL Cross Replication
- POJ - 1321 棋盘问题
- CREATE TABLE ... WITH storage_parameter [= value] [, ... ]
- Windows窗口模板