在SpringBoot项目中,会将大量的参数配置在application.properties 或者application.yml文件中。通过@ConfigurationProperties注解,我们就可以获取配置文件的参数了
用来将类中的属性和配置文件中的配置进行绑定,给类中的属性赋值。
这个与@Value注解的作用有点类似
首先定义类Student和Pet,这里介绍的是通过@ConfigurationProperties注解和application.yml文件进行绑定,给Student类中的属性赋值。
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private String userName;
private int age;
private boolean sex; //true:男,false: 女
private Date birthday;
private Map<String,Object> location;
private String[] hobbies;
private List<String> skills;
private Pet pet;
public class Pet {
private String nickName;
private String strain;
application.yml文件中的配置如下:
student:
user-name: 白起
age: 18
sex: true
birthday: 2002/02/12
location: {province: 湖南,city: 长沙 }
hobbies: [足球,篮球]
# - 足球
# - 篮球
skills: [编程,厨艺]
# - 编程
# - 厨艺
pet:
nickName: 旺财
strain: 哈士奇
在使用@ConfigurationProperties注解的时候最好是在pom.xml文件中配置元数据依赖
<!-- 元数据依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
测试:
@SpringBootTest
class Springboot02ApplicationTests {
@Autowired
private Student student;
@Test
void contextLoads() {
System.out.println(student);
}
}
| @ConfigurationProperties | @value |
注值 | 批量注入 | 单个注入 |
松散语法 | 支持 | 不支持 |
SPEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
注入复杂类型 | 支持 | 不支持 |
1、松散语法,Student类中使用userName,而application.yml中user-name就是松散语法
因篇幅问题不能全部显示,请点此查看更多更全内容