学习springboot2的第4天(2021-12-03)12-底层注解-@ConfigurationProperties配置绑定
举一个场景例子:
我们习惯于把一些爱变化的东西。比如数据库的账号密码,链接地址,数据库连接池的大小等参数配置到配置文件里面。
为了方便起见,未来可能要创建数据库连接池,把写道配置文件里面的内容用javaee解析,解析到数据库连接池。
把properties里面的所有配置绑定到javabean里面。
这个绑定过程使用java的原生代码来做有点复杂。
过程:
properties类加载配置文件
遍历配置文件里面的每一个KV值
把这些KV值一一对应配置到javabean的属性里面。
springboot把这个过程就变得非常简便。
使用配置绑定的形式,只需要一个注解@ConfigurationProperties就行了。
举例子:
1、新建javabean Car
属性:brand和price
现在准备把和汽车有关的东西放到springboot的配置文件里面。
application.properties
在配置里面写了两个配置信息:
写注解:
@ConfigurationProperties
这个属性是前缀:意思就是类里面的每一个属性和配置文件下的哪一个属性一一绑定呢?【注意】只有容器中的组件才能拥有springboot提供的强大功能。
所以,需要先给Car这个类的类体上加上注解@Component
关键写法:注解
写一个Conytroller来测试,看Car类里面的属性
brand是否被绑定为BYD
price是否被绑定为100000呢?
重启测试:
在浏览器里面输入:
http://localhost:8888/car我们如果现在把配置文件里面的配置修改了:
之前的:
现在的:
再次测试:
总结:
现在想要将javabean和配置文件里面的数据进行绑定,很简答。
第一种办法:就是容器中的组件给它标注@ConfigurationProperties 注解。也就是@Component+@ConfigurationProperties方式
第二种方式:@EnableConfigurationProperties
在配置类里面写,因为配置类首先是容器里面的组件。
然后:
在配置类上面写@EnableConfigurationProperties
开启属性配置的功能。
因为配置类已经是容器里面的组件了。
不需要再写@Component
1、在配置类上面写@EnableConfigurationProperties(Car.class)
开启Car的属性配置绑定功能
开启了之后,Car类的这个注解才能生效,而且会把Car组件注册到spring容器中。
所以现在Car类上面就没有@Component组件了。
【注意】:
这个注解:
@ConfigurationProperties(prefix = “mycar”)
今后在springboot的底层会经常看见。
只要看见这个注解,说明:
这个类的所有属性是和resources配置文件里面的application.properties(这个文件是springboot的核心配置文件,这个配置文件的名字不能乱写)
前缀为mycar有绑定机制的关系。