序言
在很久以前,Spring的配置文件是基于XML的。它的名字就是applicationContext.xml,没错,就只有这一个xml文件。
它里面配置了所有的东西。但是数据库信息通常会单独拿出来,放入一个properties文件,通常叫db.properties。
后来觉着一个xml里的东西实在太多了,就按功能拆分成几个独立的xml。
spring-dao.xml是dao层,spring-service.xml是service层,spring-tx.xml是事务相关,dispatcher-servlet.xml是web相关。
这么多的xml怎么办呢?很简单,就是在applicationContext.xml里都引用它们即可。
随着JDK在1.5加入了对注解的支持,Spring也慢慢的向注解转化。直至后来一个xml都不剩,全部变为注解,连web.xml都没有了。
是xml不行了,还是注解太牛X了,其实它们是等价的,连官网上都说它们一摸一样,故而不做推荐,让用户根据实际情况自己选择。
不过,最终历史还是抛弃了XML,肯定是多方面的原因,可能如下:
1)人们厌倦了XML,出现审美疲劳
2)试用了注解很爽,一发不可收拾
3)注解代表着先进的生产力,极大提升了效率
4)XML拖沓累赘,注解清爽干脆
5)大家都觉得使用注解比使用XML更牛B。
于是乎,一个辉煌的新时代碾压了一个曾经辉煌的曾经的新时代。
呵呵,历史是什么,就是个车轮。一切皆可碾压。
总之,既有实际实践问题,又有思想意识问题,说不清,道不明。
随着SpringBoot的横空出世,配置文件的概念又发了变化。
SpringBoot强调自动配置(也叫自动装配),所以配置对它来说很重要。
配置文件属于配置的一部分,自然也变得非常重要,于是yml就应势站了起来。
yml从未像现在这样流行,成了新时代的网红。
yml配置文件的格式
每种新事物的流行,总会有它比旧事物更好的地方。
作为Java界配置文件鼻祖,非properties文件莫属,它里面的格式就不用再举例了吧。
它是一维非结构化的,一行一个,写多了容易乱。
而yml文件是二维结构化的,有严格的缩进,结果就是层次分明,非常清晰。
而且,常用的配置都能得到支持,这就是它的优势,所以就流行起来了。
一、List配置格式,如下图01:
二、Map配置格式,如下图02:
三、List套List格式,如下图03:
四、List套Map格式,如下图04:
五、Map套Map格式,如下图05:
六、Map套List格式,如下图06:
虽然有些嵌套可能并不适用,这里只是说明yml支持这样的嵌套,如果愿意的话,嵌套层次还可以更深。
yml配置文件内容的存储
大家都知道SpringBoot是由Spring发展而来的,Spring里是有Environment这个概念的。
所有的环境变量、系统属性、配置文件内容都会放进去。
通常的配置项都是一些key=value,就和properties文件是一样的。所以Environment底层也是这样实现的。
但到了SpringBoot中,配置文件变为yml了,是二维结构化的,根本没有办法直接用key=value这种形式表示。
但是,yml配置文件的内容还必须要放入到Environment中去。那怎么办呢?看来二者必须要修改其一了。
由于Spring已经很多年了,它里面的很多概念都已经固化下来了,包括Envi