@Value和@ConfigurationProperties都是用于属性的注入(相当于spring中<bean id=" " class=" ”>-》注入到容器中)
ConfigurationProperties:告诉Spring Boot将本类中的所有属性和配置文件中相关的配置进行绑定;prefix:配置文件中哪个下面的所有属性进行映射】


Person类

@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date date;


    private Map<String,Object> map;

    private List<Object> list;

    private Student student;

    public Student getStudent() {
        return student;
    }

    public void setStudent(Student student) {
        this.student = student;
    }

application.properties或者(application.yml)

person.last-name=张三
person.age=20
person.date=2000/10/10
person.boss=false
person.map.k1=v1
person.map.k2=v2
person.list=a,b,c
person.student.name=lisi
person.student.age=13

2.两者的比较

@ConfigurationProperties@Value
不支持SpEL支持SpEL
支持JSR303校验不支持
-批量注入配置文件的属性--一个一个指定-
支持松散语法不支持
支持复杂类型 如:Map集合不支持

如果我们只是在某个业务逻辑中获取一下配置文件中的某项值,就使用@Value
比如下面这段代码

@RestController
public class ValueController {

    @Value("${person.last-name}")
    private String name;

    @RequestMapping("/sayHello")
    public String sayHello(){
        return "hello"+name;
    }
}
posted on 2020-12-13 21:43  凸凸大军的一员  阅读(71)  评论(0编辑  收藏  举报