Springboot最大的優(yōu)勢在哪里?自動配置怎么配呢?
一. 問題闡述
最近有不少同學問耀哥,使用SpringBoot和過去用XML配置的SSM程序到底有什么區(qū)別,如果我們只從寫代碼的邏輯來看,用SpringBoot也一樣是從控制層開發(fā)到持久層,似乎和過去沒什么區(qū)別。那么SpringBoot的優(yōu)勢到底在哪里呢?今天耀哥就跟大家分析一下這個問題。

二. 自動配置
其實SpringBoot的優(yōu)勢就在于【自動配置】。
大家是否還記得,在過去XML配置SSM程序的時代,我們?yōu)榱税袽ybatis整合到Spring的管理中去,第一件事情就是要配置一個數據源的bean,配置代碼如下:
如今我們使用SpringBoot整合Mybatis,我們還配置過數據源的bean嗎?很明顯我們再也沒有配置過,那么數據源的bean是誰幫助我們配置到容器里面去了呢?答案就是自動配置!SpringBoot的一個核心優(yōu)勢就是:帶有大量的自動化配置,簡化了項目開發(fā)過程。
三. 自動配置的原理
那SpringBoot又是怎么實現自動配置的?接下來耀哥將會仿照【druid-spring-boot-starter】手寫一個簡單starter工程【yg-spring-boot-starter】,實現步驟如下。
創(chuàng)建一個普通的maven工程,工程名為【yg-spring-boot-starter】
yg-spring-boot-starter工程的核心依賴如下:
在【yg-spring-boot-starter】工程中仿照DruidDatasource類,寫一個ZKXDatasource,這里只是為了說明問題,所以只保留了驅動程序,數據庫地址等幾個基礎屬性,其他代碼沒有進行實現。
在【yg-spring-boot-starter】中實現ZKXDatasource配置類,把ZKXDatasource配置成bean,并使用 @ConfigurationProperties注解一次性讀取指定前綴的自定義配置內容。
在【yg-spring-boot-starter】工程的resources目錄下,創(chuàng)建META-INF文件夾,并且創(chuàng)建spring.factories清單文件。

在spring.factoies文件中添加如下配置:
這個配置的意思是,當我們的【yg-spring-boot-starter】組件被其他工程依賴時,這個文件中羅列出來的bean將會被自動配置。
新建SpringBoot工程,加入我們手寫的starter依賴【yg-spring-boot-starter】
在新建測試工程的application.yaml文件中加上DataSources 的配置信息。
編寫junit 測試,檢測ZKXDataSources 有沒有被自動配置成bean。
測試結果如下:發(fā)現ZKXDataSources 已經被自動配置成了bean。

四. 總結
這樣,我們從仿照druid的Datasource類中就可以發(fā)現,SpringBoot的核心機制就是可以自動配置,通過大量的自動配置,大量的bean被自動配置到容器中,簡化了我們過去手動配置成bean的過程,從而簡化整個開發(fā)過程。
