栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot配置文件属性值的注入,两个注解@ConfigurationProperties和@Value的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot配置文件属性值的注入,两个注解@ConfigurationProperties和@Value的区别

SpringBoot配置文件属性值的注入,两个注解@ConfigurationProperties和@Value的区别

@ConfigurationProperties

@ConfigurationProperties注解用来快速、方便地将配置文件中的自定义属性值批量注入到某个Bean对象的多个对应属性中。并且是以set方式注入(所以需要set方法,并且set方法命名要规范)

@Component 
//将配置文件中所有以person开头的配置信息注入当前类中 
//前提1:必须保证配置文件中person.xx与当前Person类的属性名一致 
//前提2:必须保证当前Person中的属性都具有set方法 @ConfigurationProperties(prefix = "person") 
public class Person { 

private int id; //id 

private String name; //名称 

private List hobby; //爱好 

private String[] family; //家庭成员 

private Map map; 
}

application.yml (SpringBoot配置文件)

#对实体类对象Person进行属性配置 
person: 
  id: 1 
  name: 王二麻子 
family: 
  - 妻 
  - 妾 
hobby: 
  - play 
  - read 
  - sleep 
map:
  k1: value1 
  k2: value2 

@Value

@Value注解是Spring框架提供的,用来读取配置文件中的属性值并逐个注入到Bean对象的对应属性中,Spring Boot框架从Spring框架中对@Value注解进行了默认继承,所以在Spring Boot框架中还可以使用该注解读取和注入配置文件属性值。但是,@Value不仅会将配置文件中的属性注入到Bean对象中,还会将这个属性直接赋值给对应的属性,这点是@ConfigurationProperties不支持的,并且由于不是依赖于set方法进行注入,所以也不需要提供set方法

@Component 
public class Student { 

@Value("${person.id}") 
private int id; 

@Value("${person.name}") 
private String name; //名称 

//省略toString (不需要set)
}
最后注意:@Value注解对于包含Map集合、对象以及YAML文件格式的行内式写法的配置文件的属性注入都不支持,如果赋值会出现错误!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号