属性绑定
在SpringBoot中,我们可以通过使用@ConfigurationProperties注解,往注入SpringIOC容器中的Bean实例赋值属性
示例Bean
@ConfigurationProperties(prefix = "custom") //指定User实例属性的前缀
public class User {
private String name;
private Integer age;
private Pet pet;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Pet getPet() {
return pet;
}
public void setPet(Pet pet) {
this.pet = pet;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", pet=" + pet +
'}';
}
}
@ConfigurationProperties(prefix = "custom.pet") //指定Pet实例属性的前缀
public class Pet {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Pet{" +
"name='" + name + '\'' +
'}';
}
}
配置文件(application.properties)
custom.user.name=ZahngSan
custom.user.age=18
custom.pet.name=tomcat
测试示例、打印信息
@SpringBootApplication//告诉SpringBoot这是一个SpringBoot运用
public class Boot01HelloApplication {
public static void main(String[] args) {
ConfigurableApplicationContext application = SpringApplication.run(Boot01HelloApplication.class, args);
User user = application.getBean(User.class);
System.out.println(user);
}
}
//打印信息
User{name='ZahngSan', age=18, pet=Pet{name='tomcat'}}
原理
其实就是利用BeanPostProcessor(后置处理器),对应的实现类:ConfigurationPropertiesBindingPostProcessor