SpringBoot初学习——@Value/@configurationproperties/@ImportResource

上周把Spring注解的大概内容学习完了,现在回过头来继续看看SpringBoot。不知道是不是假期综合症的原因,这周学习有点心不在焉,于是学习的东西比较少。不过总比没有好吧

一.@Value和@configurationproperties的区别

上一篇讲SpringBoot的文章,我们讲到了通过@configurationproperties读取配置文件中的值然后注入到相关对象中;然后最近回过头学习的Spring的注解中,我们发现Spring是通过@Value注解来进行值的注入的;那么,对于这两个值得注入,有何区别呢?

注:@ConfigurationProperties可以读取yml文件也可以读取普通文件

 

@ConfigurationPropeties

@Vaule

功能

批量将配置文件中的值注入到对象

一个一个值进行注入

松散绑定

支持

不支持

SpEL表达式

不支持

支持

JSR303数据校验

支持

不支持

复杂类型封装

支持

不支持

1.松散绑定就是说配置文件中如果  键值中的键和被注解的对象的成员变量类似,俺么就是可以注入成功的。例如配置文件中的名字是  logName 而 对象中的是log-name   那么一样注入成功。

2.JSR303数据校验:这个主要是做数据格式的校验,比如说必须是电话号码、邮件等格式等

@configurationproperties读取了配置文件,@Validated代表校验,@Email代表lastName 的值需要是Email格式

3.复杂类型封装是和普通类型的数据类型做比较的(String,Integer等)。但是,如果被注入的成员变量是一个Map一类的对象,那么这个时候使用@Value是无法注入的

二.@ImportResource作用

从Spring注解开发,到SpringBoot的开发,都强调了一件事,那就是注解。像我们以前普通的Spring开发,对象加载到容器的时候,往往需要在Spring配置文件中添加bean标签,然后再指定对应的对象,使其在Spring启动的时候能够被注入到容器中。然而,SpringBoot的配置文件并不会读取”<bean></bean>”,因此如果有特殊情况,那么如何处理?这个时候就可以使用@ImportResource.指定读取配置文件中的bean标签。这个配置的话,放在主配置类上,也就是有配置@SpringBootApplication的那个类(这个类相当于我们原来的配置文件)

 

所以SpringBoot  建议的方法是和Spring注解一样,设置一个配置类(相当我们原来的配置文件),然后再配置类中用@Bean注解相关要导入的对象(相当我们原来配置文件中的<bean></bean>)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值