0
点赞
收藏
分享

微信扫一扫

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定


学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定

举一个场景例子:
我们习惯于把一些爱变化的东西。比如数据库的账号密码,链接地址,数据库连接池的大小等参数配置到配置文件里面。
为了方便起见,未来可能要创建数据库连接池,把写道配置文件里面的内容用javaee解析,解析到数据库连接池。
把properties里面的所有配置绑定到javabean里面。
这个绑定过程使用java的原生代码来做有点复杂。
过程:
properties类加载配置文件
遍历配置文件里面的每一个KV值
把这些KV值一一对应配置到javabean的属性里面。

springboot把这个过程就变得非常简便。
使用配置绑定的形式,只需要一个注解@ConfigurationProperties就行了。

举例子:

1、新建javabean Car

属性:brand和price

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_spring


现在准备把和汽车有关的东西放到springboot的配置文件里面。

application.properties

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_springboot2_02


在配置里面写了两个配置信息:

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_spring_03


写注解:

@ConfigurationProperties

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_java_04


这个属性是前缀:意思就是类里面的每一个属性和配置文件下的哪一个属性一一绑定呢?【注意】只有容器中的组件才能拥有springboot提供的强大功能。

所以,需要先给Car这个类的类体上加上注解@Component

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_配置文件_05

关键写法:注解

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_配置文件_06

写一个Conytroller来测试,看Car类里面的属性

brand是否被绑定为BYD

price是否被绑定为100000呢?

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_spring_07


重启测试:

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_springboot2_08


在浏览器里面输入:

​​ http://localhost:8888/car​​学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_spring_09我们如果现在把配置文件里面的配置修改了:

之前的:

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_spring_10


现在的:

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_springboot2_11


再次测试:

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_spring_12

总结:
现在想要将javabean和配置文件里面的数据进行绑定,很简答。
第一种办法:就是容器中的组件给它标注@ConfigurationProperties 注解。也就是@Component+@ConfigurationProperties方式

第二种方式:@EnableConfigurationProperties

在配置类里面写,因为配置类首先是容器里面的组件。

然后:

在配置类上面写@EnableConfigurationProperties

开启属性配置的功能。

因为配置类已经是容器里面的组件了。

不需要再写@Component

1、在配置类上面写@EnableConfigurationProperties(Car.class)

开启Car的属性配置绑定功能

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_springboot2_13

开启了之后,Car类的这个注解才能生效,而且会把Car组件注册到spring容器中。

学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定_配置文件_14


所以现在Car类上面就没有@Component组件了。

【注意】:
这个注解:
@ConfigurationProperties(prefix = “mycar”)
今后在springboot的底层会经常看见。
只要看见这个注解,说明:
这个类的所有属性是和resources配置文件里面的application.properties(这个文件是springboot的核心配置文件,这个配置文件的名字不能乱写)
前缀为mycar有绑定机制的关系。


举报

相关推荐

0 条评论