概念
SpringBoot作为spring家族新推出的一款产品旨在更快速方便的搭建一个企业级的web工程,进而取代以往开发者繁琐的配置各种xml文件,耗时的搭建环境,而且为千万级数据量的分布式工程作为基础铺垫,为springcloud系列打下坚实基础
特征
- 一个springboot项目必须有spring-boot-starter-parent依赖作为maven父级工程
- 启动类必须有springbootapplication注解
- main方法必须有springapplication.run
- 以上三点缺一不可
java配置
spring经历了几个版本的更迭,从最初spring1.0时代的所有对象都需要注入到
spring容器,到2.0时代的注解与配置文件的结合(这也是中国开发者喜欢用的方式),到3.0时代的spring提倡用java配置代替xml文件配置,这个过程经历了十几二十年,由于springboot的流行,2.0时代成为过去,传统的配置文件方式不会在springboot项目中看见,比如web.xml,application.xml.springmvc.xml等等,
这是为什么呢,因为springboot全部都帮我们做好了!
我们首先聊一聊如何使用java配置
比如我们以前配置过的数据源DataSource,怎么使用java代码配置呢?
- 引入数据源依赖(如阿里的druid)
- 创建配置类DataConfig,添加注解@configuration(配置注解,相当于xml文件)
- 在该类中创建方法,用于注入到spring容器public DataSource getDS(){
DataSource ds=new DruidDataSource();
ds.set***(***);
ds.set***(***);
ds.set***(***);
ds.set***(***);
return ds;
} - 不要忘了在该方法上添加注解@bean
以上步骤使用java代码配置取代了xml中的数据源配置
解析:spring扫描到@configuration的注解类视为配置类,将扫描里面的
带有@bean注解的方法,扫描到方法后,解析代码,将方法的返回值
作为创建的对象注入到spring容器,也就是以上的DataSource,
这样就完成了springIOC
这只是最原始最笨的方法,还有很多其它优化方式,这里举几个例子
- 创建配置文件db.properties,里面配置驱动,url,username,pwd等
jdbc.driverclassname=****
jdbc.url=***
jdbc.username=***
jdbc.password=** - 创建配置类 ConfigDataBase,添加注解,指向配置文件@ConfigurationProperties(name=“db.properties”,prefix=“jdbc”)
- maven引入lombok依赖
- 在新创建的类ConfigDataBase中添加属性,属性名称与db.properties对应
- 类名上添加@data注解取代getset,hashcode,tostring等等方法
- 在之前的DataConfig类上添加注解@enableConfigurationProperites,
可以使用属性注入,或者形参注入等方式完成注入,改造之前的方法:
public DataSource getDS(ConfigDataBase cdb){
DataSource ds=new DruidDataSource();
ds.set***(cdb.get***);
ds.set***(cdb.get***);
ds.set***(cdb.get***);
ds.set***(cdb.get***);
return ds;
}
这种方式更加优雅,可以多方共享
springboot默认使用的配置文件是application.properties,但是更优雅的
配置文件是springboot.yml文件,并且yml文件可以支持对象,集合等
更复杂的数据类型,所以本人是更喜欢使用后者来配置,
将db.properties更改为application.yml,将里面的内容做相关
修改,springboot默认可以识别,这时配置类ConfigDataBase不需要了,
直接在DataConfig中的getDS方法上添加注解@enableConfigurationProperties,只要你的application.yml文件中配置的属性与返回类DataSource中的set方法
的方法名一直,那么spring会自动识别,并且帮你完成ioc注入
这,就是优雅的java配置,非常方便
长城上的蚂蚁
2020年2月22日