SpringBoot 读取配置文件(yml)中的属性值,基本数据类型、集合、数组、对象

有时我们需要从 yml 配置文件中获取数据和值,假设现在是一个 Springboot 项目,下面我分享分别从基本数据类型、数组、集合、Map 以及单独一个对象 bean 中获取 yml 文件中的值。

以上可以分成两组,基本数据类型、数组和剩下类别,因为基本数据类型和数组的值都能通过注解@Value形式直接读取出来。

一、基本数据类型、数组

1、.pom文件添加依赖

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
</dependency>

2、.yml 配置数据

all-custom-data:
  includes: 数组元素1,数组元素2
  basic-string: 字符串
  basic-int: 100
  basic-float: 100f
  basic-double: 100.00

3、启动后在代码中获取,但这里我在单元测试代码获取对应数据。创建一个测试用例,使用如下代码获取

@RunWith(SpringRunner.class)
@SpringBootTest
public class LianxingProtocolApplicationTests {
	@Value("${all-custom-data.includes}")
	private String[] includes;

	@Value("${all-custom-data.basic-string}")
	private String basicString;

	@Value("${all-custom-data.basic-int}")
	private int basicInt;

	@Value("${all-custom-data.basic-float}")
	private float basicFloat;

	@Value("${all-custom-data.basic-double}")
	private double basicDouble;

	@Test
	public void propsTest() throws JsonProcessingException {
		System.out.println("==1==="+ Arrays.toString(includes));
		System.out.println("==2==="+ basicString);
		System.out.println("==3==="+ basicInt);
		System.out.println("==4==="+ basicFloat);
		System.out.println("==5==="+ basicDouble);
	}
}

控制台打印结果如下:

==1===[数组元素1, 数组元素2]
==2===字符串
==3===100
==4===100.0
==5===100.0

所以上面的数据都能用注解很简单的获取。

集合

集合的数据不能用@Value获取,比如现在 .yml中有这样一个集合。

all-custom-data:
  listData:
    - 集合元素2
    - 集合元素2

创建一个配置类,记得带上注解,需要使用时,调用里面定义的方法。

@Component
@ConfigurationProperties(prefix="all-custom-data") //读取 application.yml 中的 all-custom-data 下面的属性
public class MyProps {
    private List<String> listData = new ArrayList<>(); //接收 listData 里面的属性值,记得属性名和配置文件一致
      public List<String> getListData() {
        return listData;
    }
}

再来看 Map 数据

 all-custom-data:
  mapData:
    key1: value1
    key2: value2

配置类中代码是这样的

private Map<String, String> mapData = new HashMap<>(); //接收 mapData 里面的属性值
//创建对应属性值的 Get 方法
public Map<String, String> getMapData() {
		return mapData;
	}

对象

如果要在 .yml中创建一个对象,然后在代码中使用,其实和前面差不多。

custom-user:
  name: 张三
  age: 14
  sex: 1

创建一个 bean 来接收配置信息,记得属性名和配置文件中一致,而且添加 Get 、Set 方法。

@Component
@ConfigurationProperties(prefix="custom-user")
public class CustomUser {
    private String name;
    private int age;
    private int sex;

    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;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "CustomUser{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
}

使用时只要自动注入就行

	@Autowired
	private CustomUser customUser;
	
	System.out.println("====="+ customUser.toString());

ok,基本就这些。

怎么说呢?不管有用没,还是想加上这句
老郭种树原创,转载请加上SpringBoot 读取配置文件(yml)中的属性值,基本数据类型、集合、数组、对象
点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注