SpringBoot 2.x yml 文件中自定义参数解析对象
在SpringBoot中通过自定义参数可以实现很多重要的功能来达到解耦。
SpringBoot 自定义参数的类型有:
简单键值对,自定义对象,数组,List,Map,List<Map>
1. yml中添加自定义参数
# yml 自定义参数
cus:val: 雨泽bean:id: 2name: 雨昕arr1: 1, 3, 4arr2: [1, 3, 4]list:- lista- listbmap:a: mapab: mapblistmap:- a: ab: bc: c- d: de: ef: f
二、使用注解 @Value 来获取
获取原则(参数较少):
- 简单的键值对
- 不带[]的简单数组
2.1. 获取yml自定义参数中的键值对
方式一:使用注解 @Value 来获取
@Value("${cus.val}")
private String cusVal;注意:在${}中不能有空格。
2.2. 获取yml自定义参数中的数组
方式一:使用注解 @Value 来获取
@Value("${cus.arr1}")
private String cusVal;注意:在${}中不能有空格。对于没与使用”[]“括起来的数组可以使用方式一来获取,而使用了”[]“括起来的数组只能用方式二获取
三、配置文件中其他获取
配置文件中其他文件就不能使用简单的 @Value 注解来获取,需要使用如下方式获取。使用如下方式可获取:1.获取yml自定义参数中的键值对,对应上面配置文件的 val
2.获取yml自定义参数中的数组,对应上面配置文件的 arr1,arr2
3.获取yml自定义参数中的对象,对应上面配置文件的 bean 对象
4.获取yml自定义参数中的List,对应上面配置文件的 list
5.获取yml自定义参数中Map<Object,Object>,对应上面配置文件的 map
6.获取yml自定义参数中List<Map<Object,Object>>,对应上面配置文件的 listmap
第一步首先定义一个如下格式的类,具体格式:
(1)其中的成员变量名称需要与配置的自定义参数名称一致
(2)每个成员变量必须要有 get/set 方法
(3)该类使用注解 @Component 和 @ConfigurationProperties 修饰
package com.gblfy.mall.config;import com.gblfy.mall.form.UserLoginForm;
import com.gblfy.mall.pojo.User;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.List;
import java.util.Map;@Component
@ConfigurationProperties(prefix = "cus")
@Data
public class YmlParamConfig {private String val;private UserLoginForm bean;private String[] arr1;private String[] arr2;private List<String> list;private Map<String, String> map;private List<Map<String, String>> listmap;
}
测试类:
package com.gblfy.mall.controller;import com.gblfy.mall.config.YmlParamConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@Slf4j
public class YMLController {@Autowiredprivate YmlParamConfig ymlParamConfig;@Value("${cus.val}")private String cusVal;@Value("${cus.arr1}")private String cusArrl;@GetMapping("/getYmlByValue")public void getYmlByValue() {log.info("获取yml自定义参数中的 简单键值对 cusVal={}", cusVal);log.info("获取yml自定义参数中的 不带[]的数组 cusArrl={}", cusArrl);}@GetMapping("/getYmlByconfigFile")public void getYmlByconfigFile() {log.info("获取yml自定义参数中的 键值对={}", ymlParamConfig.getVal());log.info("获取yml自定义参数中的 数组1 ={}", ymlParamConfig.getArr1());log.info("获取yml自定义参数中的 数组2 ={}", ymlParamConfig.getArr2());log.info("获取yml自定义参数中的 对象 ={}", ymlParamConfig.getBean());log.info("获取yml自定义参数中的 List ={}", ymlParamConfig.getList());log.info("获取yml自定义参数中的 Map<Object,Object>", ymlParamConfig.getMap());log.info("获取yml自定义参数中的 List<Map<Object,Object>>={}", ymlParamConfig.getListmap());}
}
日志输出:
c.g.mall.controller.YMLController - 获取yml自定义参数中的 简单键值对 cusVal=雨泽
c.g.mall.controller.YMLController - 获取yml自定义参数中的 不带[]的数组 cusArrl=1, 3, 4
c.g.mall.controller.YMLController - 获取yml自定义参数中的 键值对=雨泽
c.g.mall.controller.YMLController - 获取yml自定义参数中的 数组1 =1
c.g.mall.controller.YMLController - 获取yml自定义参数中的 数组2 =1
c.g.mall.controller.YMLController - 获取yml自定义参数中的 对象 =User(id=2, username=null, password=null, email=null, phone=null, question=null, answer=null, role=null, createTime=null, updateTime=null)
c.g.mall.controller.YMLController - 获取yml自定义参数中的 List =[lista, listb]
c.g.mall.controller.YMLController - 获取yml自定义参数中的 Map<Object,Object>
c.g.mall.controller.YMLController - 获取yml自定义参数中的 List<Map<Object,Object>>=[{a=a, b=b, c=c}, {d=d, e=e, f=f}]
扩展:
#这种方式是:在配置文件中使用配置
#请求url拦截配置信息
excludeRegister: /user/register
excludeLogin: /user/login
requrl:pathPatterns: '/**'excludePathPatterns: ${excludeRegister},${excludeLogin}
SpringBoot 2.x yml 文件中自定义参数解析对象相关推荐
- 获取application.yml文件中配置参数的两个方法
application.yml文件内容 第一种(适用于获取少量配置参数): @Value("${man.name}") private String name; 第二种(适用于获取 ...
- 超简单:解析 yml 类型(application.yml)配置文件 、springboot 工程读取 yml 文件中的值
方法三是我觉得最简单的. 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 工程结构: 2. 我要读取 application.yml 中属性 ...
- 你有没有觉得邮件发送人固定配置在yml文件中是不妥当的呢?SpringBoot 动态设置邮件发送人
明月当天,不知道你有没有思念的人 前言 之前其实已经写过SpringBoot异步发送邮件,但是今天在一个小项目中要用到发送邮件时,我突然觉得邮件发送人只有一个,并且固定写在yml文件中,就是非常的不妥 ...
- 在配置spring-boot的yml文件中的项目路径时出现横划线表明已过时
在配置spring-boot的yml文件中的项目路径时出现横划线表明已过时 换成server.servlet.context-path 即可
- SpringBoot入门及YML文件详解
SpringBoot 简介 微框架,与 Spring4 一起诞生,基于约定.生来为了简化 spring 的配置 优点 可以快速的上手,整合了一些子项目(开源框架或者第三方开源库) 可以依赖很少的配置快 ...
- springboot配置文件(.yml)中自定义属性值并在controller里面获取
1,由于项目需要,学习了新的框架--springboot,顺便练习一下在.yml中配置自定义属性并在controller里面获取.(以下的Springboot框架我已经搭建好,就不在陈述) 2,spr ...
- jasypt对yml文件中密码加密
使用jasypt对yml文件中密码加密 需要:maven注解,测试类(根据秘钥生成jasypt加密码) 流程:将注解加入之后,去测试类,自定义秘钥,然后将要加密的账号密码放进去,生成的内容拿出来放到配 ...
- mql5的include库文件中自定义enum类型在指标文件中的调用方式
在mql5中编写指标,调用的include文件中某个类中使用了自定义ENUM枚举类型,如图所示: enum Smooth_Method { MODE_SMA_, //SMA MODE_EMA_, // ...
- 将文件中的参数读取成Map
/** * 将文件中的参数读取成Map * @param basePath 参数文件路径 * @return Map参数集 */ public static Map<String,String& ...
最新文章
- PAT(甲级)2019年冬季考试 7-4 Cartesian Tree
- 在Mybatis3开发中与配置相关的7点体会
- python函数能否增强代码可读性_python——初识函数
- 数据结构:二分查找算法
- (三)Linux查看和修改文件权限
- Jenkins环境搭建总结
- 反思编写页面追加页面元素的方法,目的:加快开发速度 节省开发时间 需求:点击搜索清空表格内容进行增加新的数据行
- 发现 ASP.Net 的一个关于回车提交的 Bug ? 必须多于一个 Text 域回车提交,Server: ButtonX_Click 才能截获!...
- javaScript DOM编程常用的方法与属性
- mysqld_safe启动mysql
- Java多线程学习十一:你知道哪几种锁?各有什么特点
- ArcGIS Server 开发系列(二)--Web ADF 编程
- 单例模式懒汉Java_java 单例模式(懒汉式与饿汉式)
- python-学生管理系统--2录入学生信息内容以及代码
- python基础刻意练习--Task 7 文件与文件系统
- 加密的m3u8、ts文件合并
- 2017--年终总结
- 夜晚网速变慢与网站服务器开机数量减少有关,电脑网速慢到底与什么有关?
- mapstruct使用
- 重庆万豪行政公寓:经典焕新,传奇永续