application.yml
person: name: yangzhenxu age: 25 male: true date: 1996/06/22 map: {k1: v1,k2: v2} list: - 1 - 2 dog: name: zhangxue age: 27Person类
package com.yangzhenxu.firstspringboot.bean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; @Component @ConfigurationProperties(prefix = "person") public class Person { private String name; private Integer age; private Boolean male; private Date date; private Map map; private List list; private Dog dog; public String getName() { return name; } public Integer getAge() { return age; } public Boolean getMale() { return male; } public Date getDate() { return date; } public Map getMap() { return map; } public List getList() { return list; } public Dog getDog() { return dog; } public void setName(String name) { this.name = name; } public void setAge(Integer age) { this.age = age; } public void setMale(Boolean male) { this.male = male; } public void setDate(Date date) { this.date = date; } public void setMap(Map map) { this.map = map; } public void setList(List list) { this.list = list; } public void setDog(Dog dog) { this.dog = dog; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", male=" + male + ", date=" + date + ", map=" + map + ", list=" + list + ", dog=" + dog + '}'; } }Dog类
package com.yangzhenxu.firstspringboot.bean; public class Dog { private String name; private Integer age; public void setAge(Integer age) { this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public Integer getAge() { return age; } @Override public String toString() { return "Dog{" + "name='" + name + '\'' + ", age=" + age + '}'; } }自动测试类
package com.yangzhenxu.firstspringboot; import com.yangzhenxu.firstspringboot.bean.Person; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class FirstSpringbootApplicationTests { @Autowired Person p; @Test void contextLoads() { System.out.println(p); } }这样就可以实现对application.yml里属性的读取了。 学几个注解: @Autowired 在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性 注意: 在使用@Autowired时,首先在容器中查询对应类型的bean 如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据。 如果查询的结果不止一个,那么@Autowired会根据名称来查找。 如果查询的结果为空,那么会抛出异常。解决方法时,使用required=false