目录
SpringBoot中的参数绑定一、@ConfigurationProperties二、@Value三、命令行方式——配置参数四、@ConfigurationProperties 总结~~支持松绑定SpringBoot中的参数绑定
SpringBoot的特点就是将配置文件中的配置信息自动注入到自动生成的类中,这样就可以省很多功夫了。那么这里有一个疑问?SpringBoot是如何准确的定位到这个配置信息,将配置内容注入到类中。我们又可不可以自己去自定义呢!下面这个注解将会解答你的所有疑问。
一、@ConfigurationProperties
这个注解可以非常方便的把资源文件中的内容绑定到对象上。
入门小小案例:
1、引入lombok依赖,这个依赖是专门用来生成get跟set方法的,你也可以手动生成。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2、编写一个简单的实体,代码如下:
@Component@Setter@Getter@ToString public class MyDruidDataSource { private String username; private String password; private String url; private String driverClassName;}
3、在配置文件中,写入以下的配置:
db.username=xiaozheng db.password=123456 db.url=jdbc:mysql:///crm db.driver_class_name=com.mysql.jdbc.Driver
4、在一个简单控制器,去输出MyDruidDataSource
@Controller public class DataSource { @Autowired private MyDruidDataSource myDruidDataSource; @RequestMapping("/dataSource") @ResponseBody public String dataSource(){ System.out.println(myDruidDataSource.toString()); return "hello dataSource"; }}
5、编写启动类,启动项目,访问dataSource后效果图如下:
说明当前的类并没有与配置信息有任何的绑定。
6、需要引入@ConfigurationProperties
@Component@Setter@Getter@ToString@ConfigurationProperties("db") public class MyDruidDataSource { private String username; private String password; private String url; private String driverClassName;}
7、启动,再次访问就可以了。
方法上 @ConfigurationProperties
【描述:】上面的案例,是我们自己编写的类,我们可以在类上加入@ConfigurationProperties去注入参数。但如果说是第三方的类,而我们又想去自定义它的参数呢!可以在方法上加该注解
参考代码:
假如:MyDruidDataSource是第三方类,我们可用以下方式注入:
@Bean@ConfigurationProperties(prefix = "db") public MyDruidDataSource myDruidDataSource(){ return new MyDruidDataSource();}
二、@Value
这里呢!它是根据配置文件中db.xx的名字去找类的相同成员变量名,然后将内容注入到类变量中。
那么,如果说,类成员变量跟配置文件的属性名字不一致的话,该怎么办呢?
这时候可以使用@value注解
//将配置文件中,username1的属性注入到username,这个注解就解决了属性跟类变量不一致的问题@Value("username1") private String username; @Value("password1") private String password;
三、命令行方式——配置参数
使用——开头的参数都可以被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用下划线风格,支持这种类型的绑定。
来源:
http://www.icode9.com/content-4-31301.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。