springboot的@configurationProperties注解他可以将你application.propertie中自定义的属性对pojo类进行属性填充
通常他有两种使用方法
1 在pojo类中配合@Component注解 先将这个组件放到spring容器中才能进行使用@configurationProperties注解将application.properties与application.yaml文件内自定义的属性导入
@configurationProperties他的主要目的就是将自定义的属性进行导入类
下面是实体类Person 的@ConfigurationProperties(prefix = "person")配合yaml完整用法 @Component @ConfigurationProperties(prefix = "person")//通过读入yaml方式进行指定的属性注入他支持松散绑定 在类中是驼峰命名对应yaml文件的 lastName=last-name @Validated//JSR303数据校验 开启后要使用其他的注解必须要导入JSR303数据校验依赖 public class Person { @Email//若注入的值不是邮箱格式就会报错 要启用@Email注解必须先给类加上@Validated数据校验注解 private String name; private int age; private String sex; private Map<String,Object> map; private List<String> list; private String Email; @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", sex='" + sex + '\'' + ", map=" + map + ", list=" + list + ", Email='" + Email + '\'' + '}'; } public Person(String name, int age, String sex, Map<String, Object> map, List<String> list, String email) { this.name = name; this.age = age; this.sex = sex; this.map = map; this.list = list; Email = email; } public String getEmail() { return Email; } public void setEmail(String email) { Email = email; } public Person() { } public Person(String name, int age, String sex, Map<String, Object> map, List<String> list) { this.name = name; this.age = age; this.sex = sex; this.map = map; this.list = list; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Map<String, Object> getMap() { return map; } public void setMap(Map<String, Object> map) { this.map = map; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } }
这里是application.yaml需要注入的属性 person: name: 1156574080@qq.com age: ${random.int} sex: 男 map: {phone: '00000000000',location: 派出所} list: - 1 - 2
prefix="**"可以指定要注入的数据位置在yaml中可以有松散绑定和数据校验
2.在pojo中没有@Component注解的情况下可以在配置类中添加注解
@EnableConfigurationProperties(Pet.class)
这个注解能够使Pet类进入spring容器中
然后直接在pojo类中使用@configurationProperties注解