SpringBoot - @ConfigurationProperties

属性绑定

在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

猜你喜欢

转载自blog.csdn.net/qq_27062249/article/details/118226624