7赞
822
当前位置:  开发笔记 > 编程语言 > 正文

springboot.yml文件配置参数映射复杂数据类型

spingboot中yml是我们常用的配置文件,除了spring和其他三方框架支持的配置项之外,我们可以自定义配置项,通过value来获取

spingboot中yml是我们常用的配置文件,除了spring和其他三方框架支持的配置项之外,我们可以自定义配置项,通过@value来获取简单数据类型的值,同时也可以在yml文件中配置一些复杂数据类型,如对象、集合、map等,闲话少说,直接上代码:

第一步:引入maven依赖

org.springframework.bootspring-boot-configuration-processortrue

第二步:编写一个配置类、申明为配置类或者spring管理的component对象均可、下面罗列了常见的复杂数据类型、其他复杂类型可以根据规则自行扩展。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import java.util.Arrays;
import java.util.List;
import java.util.Map;/*** @title: Cusconfig* @description: TODO* @auther: zhangjianyun* @date: 2022/4/13 9:53*/
@Component
//@Configuration
@ConfigurationProperties(prefix = "cususer")
public class Cusconfig {@Value("cusValue")private String cusValue;//简单数据类型private String name;private Integer age;private String addr;//简单list setprivate List cuslist;//简单数组private String[] cusArray;//简单map json配置格式private Map cusmap;//简单map key-value 格式private Map cusmap2;//list map嵌套private List> cuslist2;//对象类型 **不能使用内部类对象private Son son;@PostConstructprivate void test(){System.out.println("name="+name);System.out.println("age="+age);System.out.println("addr="+addr);System.out.println("cuslist="+Arrays.toString(cuslist.toArray()));System.out.println("cusArray="+Arrays.toString(cusArray));System.out.println("cusmap="+cusmap);System.out.println("son.age="+son.getAge());System.out.println("son.name="+son.getName());System.out.println("cuslist2="+Arrays.toString(cuslist2.toArray()));System.out.println("cusmap2="+cusmap2);System.out.println("cusValue="+cusValue);}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}public List getCuslist() {return cuslist;}public void setCuslist(List cuslist) {this.cuslist = cuslist;}public Map getCusmap() {return cusmap;}public void setCusmap(Map cusmap) {this.cusmap = cusmap;}public Son getSon() {return son;}public void setSon(Son son) {this.son = son;}public Map getCusmap2() {return cusmap2;}public void setCusmap2(Map cusmap2) {this.cusmap2 = cusmap2;}public List> getCuslist2() {return cuslist2;}public void setCuslist2(List> cuslist2) {this.cuslist2 = cuslist2;}public String[] getCusArray() {return cusArray;}public void setCusArray(String[] cusArray) {this.cusArray = cusArray;}public String getCusValue() {return cusValue;}public void setCusValue(String cusValue) {this.cusValue = cusValue;}
}

/*** @title: Son* @description: TODO* @auther: zhangjianyun* @date: 2022/4/13 10:57*/
public class Son {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

第三步 编写配置文件

cususer:name: zjyage: 28addr: bjbitrh:cuslist:- 'aa'- 'bb'- 'cc'cusArray:- 'aaa'- 'bbb'- 'ccc'cusmap: {name: zjy,age: 18}son:name: zjysonage: 2cusmap2:key1: value1key2: value2key3: value3cuslist2:- map1:mapkey1: mapvalue1mapkey2: mapvalue2mapkey3: mapvalue3- map2:mapkey1: mapvalue111mapkey2: mapvalue222mapkey3: mapvalue322- map3:mapkey1: mapvalue144mapkey2: mapvalue244mapkey3: mapvalue344
cusValue: cusvalue

第四步代码测试 查看spring启动日志

 注意事项:

1.所有的属性都应该配置get,set方法否则无法取到配置文件中的值

2.对象类型的参数不能是内部类,只能申明在外部


推荐阅读
author-avatar
weijun520
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有