1. YAML配置文件注入法
yaml文件可以直接给实体类注入整个文件的值
- 在springboot项目中的resources目录下新建一个文件 application.yml
- pojo目录下创建实体类Dog和实体类Person
- Dog.java
@Component //注册bean到容器中
@Data
public class Dog {
private String name;
private Integer age;
}
- Person.java
@Component //注册bean到容器中
@Data
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
注意
- @Component 注册bean到容器中
- 使用yaml配置的方式进行注入,大家写的时候注意区别和优势,我们编写一个yaml配置
person:
name: wwj
age: 18
happy: false
birth: 1994/04/16
maps: {k1: v1,k2: v2}
lists:
- code
- music
- keep
dog: { name: 崽崽, age: 22} # 对象的行内写法
4.配置文件中将person这个对象的所有值都写好了,现在来注入到类中!
@Component //注册bean到容器中
@Data
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
注意: @ConfigurationProperties
作用: 将配置文件中配置的每一个属性的值,映射到这个组件中; 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定 参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
5. 、IDEA 提示,springboot配置注解处理器没有找到,此刻需要导入依赖:
<!--导入配置文件处理器,在编写配置文件时就会提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
导入该依赖后。记得重启才会生效,再编写绑定的配置文件会有提示;
- 测试
@SpringBootTest
class Springboot02YamlApplicationTests {
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
执行结果:发现注入成功:
将配置文件的key 值 和 属性的值设置为不一样,则结果输出为null,注入失败
2. properties配置文件注入:
person.name=wwj
person.age=20
person.birth=1994/05/19
person.happy=true
person.lists=one,two,three
person.maps.key1=value1
person.maps.key2=value2
person.dog.name = 崽崽
dog.name=崽崽
dog.age=2
运行后,发现 properties 文件在 idea 上中文乱码, 进行如下设置就会不会乱码