Springboot入門+Spring data mongo源碼分析

文章 科技 小裁縫先生 小裁縫先生 2017-08-03

Springboot入門+Spring data mongo源碼分析

在上一篇文章中寫了Springboot中使用mongo數據庫,但是文章中只是寫了mongo相關的內容,沒有涉及到如何創建Springboot工程。因此在這篇文章中主要寫的有兩點內容,第一個就是如何創建一個Springboot程序,另一個就是解答上一篇文章中提出的為什麼在application.yml中配置了相關屬性就可以操縱Mongo數據庫。

如何創建一個Springboot工程?

第一步通過創建一個maven工程。創建的工程目錄結構以及pom.xml文件內容如下

Springboot入門+Spring data mongo源碼分析

生成的工程目錄結構以及pom文件結構

第二步,在pom.xml中加入Springboot的依賴

Springboot入門+Spring data mongo源碼分析

添加依賴

第三步,創建執行入口類。在類名上需要加上@SpringBootApplication註解以及添加main方法

Springboot入門+Spring data mongo源碼分析

app入口

到目前為止,一個最簡單的Springboot程序就算是構建完成,我們可以通過一個簡單的請求來判斷是否能正常運行。

Springboot入門+Spring data mongo源碼分析

測試程序

在第一處加上@RestController(相對於@Controller,增加了@ResponsBody),在第二處加上測試程序,在頁面輸出當前時間,然後右鍵Run As->Java Application,啟動成功(默認端口為8080),在頁面訪問如下:

Springboot入門+Spring data mongo源碼分析

訪問結果

到現在為止,Springboot工程的創建就算是結束了。這只是最簡單的,後續會基於這個工程繼續新增其他的新功能。接下來是解答SpringData-mongo中MongoOperations的初始化,這裡我們將之前的代碼拷貝到新建的topline-springboot-mongo(這個項目會放到碼雲上)中。

之前我們說過MongoTemplate實現了MongoOperations,因此我們只需要弄明白MongoTemplate是如何初始化的即可。從MongoTemplate的源碼可以看出MongoTemplate的可用的構造函數只有兩個

Springboot入門+Spring data mongo源碼分析

MongoTemplate構造函數

其中第一個調用了第二個,接下來我們只要通過Ctrl+Shift+G這個快捷鍵就可以看到,第二個構造函數在哪裡被調用。查看後可以看到是MongoDataAutoConfiguration調用了MongoTemplate構造函數

Springboot入門+Spring data mongo源碼分析

構造函數

接下來我們看看MongoProperties的源代碼

Springboot入門+Spring data mongo源碼分析

MongoProperties的源碼

從上圖中可以看出MongoProperties在實例化時,會從上下文環境中獲取以spring.data.mongodb開頭的配置來設置它的屬性。這就是為什麼在application.yml中配置mongo的信息,可以直接使用MongoOperations的關鍵所在,下圖是application.yml的配置

Springboot入門+Spring data mongo源碼分析

mongo配置

到現在為止,我們就已經完成從源碼中瞭解到為什麼只需要依賴MongoOperations就可以操作mongo的原因。在源碼中大家可以看到還有很多我們之前沒有接觸到的註解,例如@ConditionalOnClass,@AutoConfigureAfter等,這些後面會做一一的講解。

最後,springboot-mongo的工程,我放在了碼雲上,路徑為 https://git.oschina.net/watcher-xue/topline-springboot-mongo.git ,有興趣的朋友可以關注或者下載看看,這個工程後續持續更新。

相關推薦

推薦中...