在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 来获取

获取原则(参数较少):

  1. 简单的键值对
  2. 不带[]的简单数组

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 文件中自定义参数解析对象相关推荐

  1. 获取application.yml文件中配置参数的两个方法

    application.yml文件内容 第一种(适用于获取少量配置参数): @Value("${man.name}") private String name; 第二种(适用于获取 ...

  2. 超简单:解析 yml 类型(application.yml)配置文件 、springboot 工程读取 yml 文件中的值

    方法三是我觉得最简单的. 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 工程结构: 2. 我要读取  application.yml 中属性 ...

  3. 你有没有觉得邮件发送人固定配置在yml文件中是不妥当的呢?SpringBoot 动态设置邮件发送人

    明月当天,不知道你有没有思念的人 前言 之前其实已经写过SpringBoot异步发送邮件,但是今天在一个小项目中要用到发送邮件时,我突然觉得邮件发送人只有一个,并且固定写在yml文件中,就是非常的不妥 ...

  4. 在配置spring-boot的yml文件中的项目路径时出现横划线表明已过时

    在配置spring-boot的yml文件中的项目路径时出现横划线表明已过时 换成server.servlet.context-path 即可

  5. SpringBoot入门及YML文件详解

    SpringBoot 简介 微框架,与 Spring4 一起诞生,基于约定.生来为了简化 spring 的配置 优点 可以快速的上手,整合了一些子项目(开源框架或者第三方开源库) 可以依赖很少的配置快 ...

  6. springboot配置文件(.yml)中自定义属性值并在controller里面获取

    1,由于项目需要,学习了新的框架--springboot,顺便练习一下在.yml中配置自定义属性并在controller里面获取.(以下的Springboot框架我已经搭建好,就不在陈述) 2,spr ...

  7. jasypt对yml文件中密码加密

    使用jasypt对yml文件中密码加密 需要:maven注解,测试类(根据秘钥生成jasypt加密码) 流程:将注解加入之后,去测试类,自定义秘钥,然后将要加密的账号密码放进去,生成的内容拿出来放到配 ...

  8. mql5的include库文件中自定义enum类型在指标文件中的调用方式

    在mql5中编写指标,调用的include文件中某个类中使用了自定义ENUM枚举类型,如图所示: enum Smooth_Method { MODE_SMA_, //SMA MODE_EMA_, // ...

  9. 将文件中的参数读取成Map

    /** * 将文件中的参数读取成Map * @param basePath 参数文件路径 * @return Map参数集 */ public static Map<String,String& ...

最新文章

  1. PAT(甲级)2019年冬季考试 7-4 Cartesian Tree
  2. 在Mybatis3开发中与配置相关的7点体会
  3. python函数能否增强代码可读性_python——初识函数
  4. 数据结构:二分查找算法
  5. (三)Linux查看和修改文件权限
  6. Jenkins环境搭建总结
  7. 反思编写页面追加页面元素的方法,目的:加快开发速度 节省开发时间 需求:点击搜索清空表格内容进行增加新的数据行
  8. 发现 ASP.Net 的一个关于回车提交的 Bug ? 必须多于一个 Text 域回车提交,Server: ButtonX_Click 才能截获!...
  9. javaScript DOM编程常用的方法与属性
  10. mysqld_safe启动mysql
  11. Java多线程学习十一:你知道哪几种锁?各有什么特点
  12. ArcGIS Server 开发系列(二)--Web ADF 编程
  13. 单例模式懒汉Java_java 单例模式(懒汉式与饿汉式)
  14. python-学生管理系统--2录入学生信息内容以及代码
  15. python基础刻意练习--Task 7 文件与文件系统
  16. 加密的m3u8、ts文件合并
  17. 2017--年终总结
  18. 夜晚网速变慢与网站服务器开机数量减少有关,电脑网速慢到底与什么有关?
  19. mapstruct使用
  20. 重庆万豪行政公寓:经典焕新,传奇永续

热门文章

  1. git 操作二进制文件
  2. GC算法-引用计数法
  3. Catalan数应用
  4. 红黑树 java代码实现
  5. java中钩子方法 addShutdownHook 学习使用
  6. 2019阿里巴巴技术面试题集锦(含答案)
  7. 阿里云安全肖力:云的六大安全基因助力企业构建智能化安全体系
  8. 实战:阿里巴巴 DevOps 转型后的运维平台建设
  9. 基于TableStore构建简易海量Topic消息队列
  10. 英雄帖!移动云首批最有价值专家(MVP)招募开始了!