欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

yaml 配置文件值获取

程序员文章站 2022-05-03 22:08:14
...

yaml 配置文件值获取
yaml 配置文件值获取
yaml 配置文件值获取
yaml 配置文件值获取
yaml 配置文件值获取
练习:
步骤,及注意的点:
1、创建两个class:person,和dog,并且初始化。包括数据及set,get方法。
2、在resource下新建一个以.yml为后缀的文件。
3、需要往pom.xml中写一个依赖,导入配置文件处理器,配置文件进行绑定时会有提示。
4、根据以上的格式来写yml文件,需要注意的是,文件中数据类型一定要与写的数据相对应。
5、将配置文件中每一个属性的值,映射到这个组件中。
@ConfigurationProperties告诉springboot 将本类中的所有属性,与配置文件中相关的配置进行绑定。
prefix = “person”:配置文件中哪个下面的所有属性进行一一映射

yaml 配置文件值获取
yaml 配置文件值获取

@ConfigurationProperties(prefix = “person”)默认从全局配置文件中获取值
所以如果我们想把一些与spring boot一些无关的配置提取出来,就需要用到
@PropertySource(value ={“classpath:person.properties”}) --告诉spring boot 来加载类路径下person.properties的内容并且将他们绑定到这个person对象中。
当然,前提是我们自己已经建了一个person.properties文件,并且已经对其进行配置。

6、只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
所以需要@Component来将其加到容器中。

代码部分:
person:


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;
/*
将配置文件中每一个属性的值,映射到这个组件中。
@ConfigurationProperties告诉springboot 将本类中的所有属性,与配置文件中相关的配置进行绑定
 prefix = "person":配置文件中哪个下面的所有属性进行一一映射

 只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
 所以需要@Component来将其加到容器中。

  */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private  String lastName;
    private Integer age;
    private boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<Object> lists;
    private  Dog dog;

    public String getLastName() {
        return lastName;
    }

    public Integer getAge() {
        return age;
    }

    public boolean isBoss() {
        return boss;
    }

    public Date getBirth() {
        return birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public void setBoss(boolean boss) {
        this.boss = boss;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "lastName='" + lastName + '\'' +
                ", age=" + age +
                ", boss=" + boss +
                ", brith=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }
}

dog:


public class Dog {
    private String name;
    private Integer age;

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }

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

yml:

person:
  age: 12
  last-name: 小明
  boss: false
  maps: {k1: v1,k2: 12}
  lists:
    - lisi
    - zhaoliu
  dog:
    name: 小狗
    age: 21
  birth: 2012/4/9

以下是一个单元测试
spring boot 的单元测试:
可以在测试期间,很方便的类似编码一样进行自动注入等容器的功能。
重点是
@Autowired
Person person;


@SpringBootTest
class DemoApplicationTests {

	@Autowired
	Person person;

	@Test
	void contextLoads() {
		System.out.println(person);
	}

}

测试结果:

Person{lastName='小明', age=12, boss=false, brith=Mon Apr 09 00:00:00 CST 2012, maps={k1=v1, k2=12}, lists=[lisi, zhaoliu], dog=Dog{name='小狗', age=21}}

Spring Boot应该如何导入spring配置文件呢?
一:
yaml 配置文件值获取yaml 配置文件值获取
yaml 配置文件值获取
二:
yaml 配置文件值获取
补充一点是关于@bean和@component的区别
1、@Component 是用在类上的
2、@Bean 需要在配置类中使用,即类上需要加上@Configuration注解

如果你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component注解的,因此就不能使用自动化装配的方案了,但是我们可以使用@Bean。

spring boot 导入spring配置文件自己的一些思考:

第一种方法是新建一个xml文件,然后在其中写入bean,并且还需要在需要导入的组件上面标志@importResource(location=“classpath={}”).
但是之所以会有第二种方法就是因为,第二种方法对其进行了优化处理。
优化在于
1、不需要创建xml文件对其进行配置。而是再新建一个类,再类上申明这是一个配置类@configuration。
2、不需要再配置bean,而是直接使用@bean就可以将配置类中方法的return(返回值)这个组件加入到容器中。
3、不需要再在组件上标注@importResource,来获取配置文件后将组件注入容器。而是只需前两步就可以完成操作。

相关标签: Spring Boot