作者:weijun520 | 来源:互联网 | 2023-03-19 00:44
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
/*** @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.对象类型的参数不能是内部类,只能申明在外部