目录
SpringBoot中的参数绑定
一、@ConfigurationProperties
二、@Value
三、命令行方式——配置参数
四、@ConfigurationProperties 总结~~支持松绑定
SpringBoot中的参数绑定
SpringBoot的特点就是将配置文件中的配置信息自动注入到自动生成的类中,这样就可以省很多功夫了。那么这里有一个疑问?SpringBoot是如何准确的定位到这个配置信息,将配置内容注入到类中。我们又可不可以自己去自定义呢!下面这个注解将会解答你的所有疑问。
一、@ConfigurationProperties
这个注解可以非常方便的把资源文件中的内容绑定到对象上。
- 入门小小案例:
1、引入lombok依赖,这个依赖是专门用来生成get跟set方法的,你也可以手动生成。
<dependency> |
2、编写一个简单的实体,代码如下:
|
3、在配置文件中,写入以下的配置:
|
4、在一个简单控制器,去输出MyDruidDataSource
|
5、编写启动类,启动项目,访问dataSource后效果图如下:
说明当前的类并没有与配置信息有任何的绑定。
6、需要引入@ConfigurationProperties
|
7、启动,再次访问就可以了。
- 方法上+@ConfigurationProperties
【描述:】上面的案例,是我们自己编写的类,我们可以在类上加入@ConfigurationProperties去注入参数。但如果说是第三方的类,而我们又想去自定义它的参数呢!可以在方法上加该注解
参考代码:
假如:MyDruidDataSource是第三方类,我们可用以下方式注入:
|
二、@Value
这里呢!它是根据配置文件中db.xx的名字去找类的相同成员变量名,然后将内容注入到类变量中。
那么,如果说,类成员变量跟配置文件的属性名字不一致的话,该怎么办呢?
这时候可以使用@value注解
|
三、命令行方式——配置参数
使用——开头的参数都可以被SpringBoot视为参数,允许参数的绑定。
或者通过java –jar 项目 –db.username=xiaozheng –db.password=123456….方式也可以
四、@ConfigurationProperties 总结~~支持松绑定
允许匹配方式:
db.userName = 类成员userName
db.user_name = 类成员userName
db.user-name = 类成员userName
db_user_name = 类成员userName
为什么支持松绑定?
因为参数绑定来源有很多,例如系统变量,我们习惯配置
JAVA_HOME、MAVEN_HOME用下划线风格,支持这种类型的绑定。