1. 程式人生 > >帶著萌新看springboot原始碼13(手寫一個自己的starter)

帶著萌新看springboot原始碼13(手寫一個自己的starter)

  springboot的最強大的就是那些xxxAutoconfiguration,但是這些xxxAutoConfiguration又依賴那些starter,只有匯入了這些場景啟動器(starter),我們很多自動配置類才能有用,並且還會新增一些功能,

  這次就來一起寫個簡單的starter,來看看內部到底是什麼原理!

  腦中大概有個印象:我們要用一個場景(比如web),直接匯入下圖所示的依賴,但是在jar包裡面去看這個,你會發現裡面只有一些基本的配置檔案,什麼類都沒有,就能夠想到這個一類就類似一個公司前臺的作用,通過這個公司前臺,能夠聯絡到公司內部。

  提前準備:必須要有IDEA模組化建立專案的基本操作,其他的隨意

  溫馨提醒:對於會用模組的小夥伴,其實這裡就是建立一個空專案,裡面新建一個maven模組,一個springboot模組,springboot座標丟到maven的pom裡面,再刪除一些多餘的檔案和依賴。

1.建立一個空的專案

  

  然後就會跳出下圖這個頁面

  上面相當於前臺建立好了,下面開始建立真正的東西了,繼續建立模組

  兩個模組建立好了之後,將這兩個模組聯絡起來(廢話,公司前臺肯定要有和上級的的通話方式啊)

  匯入依賴之後就是這樣的

  下一步就是在xxxautoconfiguration模組,刪除一些沒用的東西和依賴,但是一定要保留一個最基本的starter

-----------------------------------------------------------------------------------------------------------------------------

  到這裡,基本的準備工作已經完成(其實會用模組式的直接能跳到這裡來)

  記住:xxxstarter是前臺,只是起到一個聯絡作用(所以我們基本不配置這個),沒有什麼其他功能,但是那個xxxautoconfiguration才是內部有實權的老闆

  現在我們來做個老闆出來,嘿嘿嘿!

  下面看我的目錄結構

  從頭到尾看一下這些類裡面有什麼

  第一個:HelloProperties

   第二個:HelloWorld(記住,此時這個類和properties類還沒什麼關係,必須要讓第三方傳入properties)

   第三個HelloWorldAutoconfiguration

  第四個.spring.factories檔案

  最後一步:把這兩個安裝到maven本地倉庫記得,先是xxautoconfiguration,然後再starter

  另外一個starter一樣的操作

  到此為止,一個簡單的HelloWorid的starter就做出來了,我們只需要在我們的專案中匯入那個starter(也就是前臺唯一的作用)的依賴,就可以了,看看我的starter的座標(還要記住,properties檔案配置的@ConfigurationProperties(prefix = "wyq.hello"),這個prefix是可以在我們專案裡面配置檔案配置屬性的哦~~)

  測試:

file------>new------->project,和以前用springboot一樣,隨便新建一個springboot應用(記住,一定要選擇web模組,不然自動配置類作用,因為配置了@ConditionalOnWebApplication),匯入上圖的依賴

  隨便寫個controller測試一下

  測試成功

------------------------------------------------------------------------------------------------ 

  

--------------------------------------------------------------------------------------------------

  到此結束,是不是覺得starter也就這樣啊,挺好玩的一個東西,而且最重要的是這種設計的模式有點厲害!通過這樣的設計,居然能夠實現自動配置,果然是學海無涯啊,要不斷的學習別人前輩造就出來的成果,站在巨人的肩膀上學習,我們才能走得更遠啊!