Spring Boot 核心配置与注解02——配置文件属性值的注入

本文详细介绍了Spring Boot中@ConfigurationProperties和@Value注解用于配置文件属性值注入的区别和使用场景。@ConfigurationProperties适用于批量注入,支持复杂类型、松散绑定和JSR303数据校验,而@Value则适合单个注入,支持SpEL表达式。了解这两个注解的特性有助于更好地管理应用配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用@ConfigurationProperties注入属性
Spring Boot提供的@ConfigurationProperties注解将配置文件中的自定义属性值批量的注入到某个Bean对象的多个属性中。具体方法可以参考全局配置文件中的例子。
如果是自定义的配置文件,需要在配置类中加入@Configuration或者@Component 和 @PropertySource注解。
@Configuration注解用于表示当前类是一个自定义配置类,该类会作为Bean对象添加到Spring容器中,这里等同于@Component注解
@@PropertySource注解指定自定义配置文件的位置和名称。
如果使用的是@Configuration注解,则需要使用@EnableConfigurationProperties注解表示开启对应配置类的属性注入功能,如果使用的是@Component注解,则@EnableConfigurationProperties注解就可以省略。
2.使用@Value注入属性
@Value注解是Spring框架提供的,用来读取配置文件中的属性值并逐个注入Bean对象的对应属性中。Spring Boot框架对Spring框架中的@Value注解进行了默认继承,所以在Spring Boot框架中还可以使用该注解读取和注入配置文件属性值。
例子:

public class Pet {
    @Value("${pet.type}")
    private String type;

@Value不仅支持注入属性,还可以直接为属性赋值,这是@ConfigurationProperties不支持的。
3.两种注解的比较

对比点@ConfigurationProperties@Value
底层框架Spring BootSpring
功能批量注入单个注入
setter方法需要不需要
杂类型属性值注入支持不支持
松散绑定支持不支持
JSR303数据校验支持不支持
SpEL表达式不支持支持

具体说明:
1.底层框架
@ConfigurationProperties注解是Spring Boot框架自带的;而@Value注解是Spring框架支持的,只不过Spring Boot框架对Spring进行了默认支持,所以也可以使用@Value注解的相关功能。
2.功能
@ConfigurationProperties注解能够将配置文件中的属性批量注入到Bean对象中,而@Value智能单个注入。
3.setter方法
在使用@ConfigurationProperties注解进行配置文件属性值注入时,还必须为每个属性设置setter方法。如果配置文件中没有配置相应属性,则会自动将对应的Bean属性设置为空。@Value不需要为属性设置setter属性。
4.复杂类型属性注入
@ConfigurationProperties支持任意数据类型的属性注入,包括基础数据类型和复杂数据类型,@Value只能诸如基本类型的属性。
5.松散绑定
@ConfigurationProperties注解进行配置文件属性注入时,支持松散绑定语法。例如Person类中有一个字符串类型的属性firstName,那么在配置文件中可以如下语句进行配置

person.firstName=ddd //标准写法
person.FIRST_NAME=ddd //使用大写字母,并用下划线“_”分割
person.first-name=ddd //使用横线“-”分割
person.first_name=ddd //使用下划线“_”分割

@Value注解不支持松散绑定语法。
6.JSR303数据校验
@ConfigurationProperties注解进行配置文件属性注入时,支持JSR303数据校验。其主要作用是校验配置文件中注入对应Bean对象的属性值是否符合相关值的规则。
@Value注解不支持JSR303数据校验功能
7.SpEL表达式
@Value注解注入配置文件属性时,支持SpEL表达式语法,即“#{xx}”。例如Person类有一个整型的属性id

    @Value("#{5*2}")
    private int id;

@ConfigurationProperties注解不支持该功能。
————————————————————————————————————————
参考资料《Spring Boot企业级开发教程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值