SpringBoot成長記1:你真的懂SpringBoot嗎?


眾所周知,Spring是java中應用最為廣泛的框架,而近些年來SpringBoot的興起,讓Spring的應用和便利更上一層樓。

今天我們第一節,就來認識下SpringBoot給我帶來什么,它的核心特點是哪些。

認識一個新技術的時候,通常是從一個入門的HelloWorld開始,之后閱讀它的一些入門文檔和書籍、視頻,從而掌握它的基本使用。

而SpringBoot已經廣為java工程師所周知了,但是它核心的特點,不同人的認識還是有所不同。今天,我們就從官網出發,看看官方是定義它的特點和優勢的。

最后我結合自己的思考,總結下自己的理解。

從官網開始認識SpringBoot

從官方https://spring.io/projects 我們可以看到如下對SpringBoot的介紹:

file

SpringBoot介紹:“從構建Spring應用程序出發,讓您盡可能快的啟動運行Spring應用程序。” 可以看到SpringBoot本質是為了更好的、更便利的使用Spring,這個是它誕生的初衷。

這里我要額外說一點的是,程序員寫代碼的時候,思想遠遠比方法重要。所以我們理解代碼最關鍵的是理解它的思想,而不是僅僅簡單的使用它。框架無非是解決了一系列場景問題的技術方案而已,有各自的適用場景。這個就是思想,才是我們要掌握的,而不是說我掌握了多少個框架。

回歸正題,我們通過官方,之所以更多的是要看看它創作SpringBoot的目的,SpringBoot的框架解決了什么問題,特點是什么。之后站在一定高度去理解SpringBoot,才能更好地學習它。這個是我想要教給大家的方法,讓我們繼續來看。

官方如何介紹SpringBoot提供了哪些功能?

剛才通過官方的介紹,你知道了Springboot的是為了更好的便利的使用Spring,創建應用程序。那它提供了什么功能,讓我們更好的使用Spring呢?

這個當然是作者給出的回答最好了。通常你可以通過一個技術的官方文檔來了解它。SpringBoot的官方文檔,編寫的還是非常好的。你可以參考:https://docs.spring.io/spring-boot/docs/current/reference/html/

官方文檔是非常詳細的,就像一本書一樣,我們怎么找到我們想要的知識點呢?其實思路很簡單,找下目錄,就和我們看書一樣,或者看課程目錄一樣,先大體過一下目錄,就知道自己想要的只是在哪里了。先脈絡后細節的思想是我一直在強調的。

比如我么你想要找SpringBoot核心提供哪些功能。首先在overview中,就是介紹它的大體功能

file

在目錄中我們找到了,兩個章節可能和介紹功能有關,如下圖:

file

你可以都打開看看,首先是Documentation Overview,里面的確有介紹SpringBoot功能特點,如下圖所示:

file

file

這個Documentation Overview,可以看出來,主要是對SpringBoot 功能一個是概要描述,其中第4點中,介紹了Core Featues,也就是核心功能。

這個就是我們想找的,官方理解。核心功能中主要有:SpringApplication | External Configuration | Profiles | Logging。其次還有MVC | Embedded Containers等。

file

參考文檔中另一鏈接,是對SpringBoot功能一個特別詳細的描述。可以看到,左邊目錄有SpringApplication的介紹,Profiles、Logging等各個功能介紹。

通過上面的overview和目錄中的兩篇文檔對SpringBoot 功能的介紹,其實已經介紹了SpringBoot的功能了。你需要大體對官方給SpringBoot定義的功能,可以概括如下:

1)官方核心定義了一個SpringApplication的概念,實現web應用的新流程,支持自己內嵌了一個web容器

2)官方給出了可擴展配置,便捷的和Spring整合各種技術

3)提供了各種便捷的功能,如Profile多環境配置,Logging靈活的日志組件插拔、各種技術的便捷使用等等。

我們通過去官方文檔尋找SpringBoot核心功能,教給大家了很重的一個思想,先脈絡后細節的思想。這個非常關鍵,這個思想之后我們會一直用到的。

自己對SpringBoot功能的思考

有了上面的官方文檔的一些介紹,下面我們來結合自己的理解,思考下SpringBoot的功能到底給我們帶來了什么。

1、SpringBoot定義了新的web應用啟動流程

首先第一點最重要就是,引入了一個SpringApplication的概念,它這個概念實際是定義了一套新的web應用啟動流程。

你可以回想一下,在沒有SpringBoot的時候,我們開發和啟動web應用時,主要流程如下:

1)通過Spring先整合好一些web框架如SpringMVC/Struts2,本質是整合DistpatherServelt/Listener到Tomcat的啟動流程中

2)通過構建工具如Maven將開發好的項目打成一個War包,丟入到Tomcat的webApp目錄

3)啟動Tomcat,接受http、rpc等請求交給Spring創建的各種bean來處理請求。

整體流程如下圖所示:

file

而使用了SpringBoot,它引入了一個SpringApplication的概念,定義了一套新的啟動流程,主要有如下幾步

1、定以main函數入口
2、自動裝配外部配置 ,如starter等
3、創建Spring IOC容器
4、啟動tomcat web容器

新定義的web應用啟動的流程變成了如下圖所示:

file

當然SpringBoot也支持打成war包,丟入到Tomcat中,不使用內嵌容器這個功能。但是其他的SpringBoot功能仍是很好用的,比如常說的自動裝配配置。

2、SpringBoot的自動裝配配置解決了Spring集成各種技術的復雜性

我們之前提到過,SpringBoot的核心思想是為了更好的、更便利的使用Spring,構建web應用。

那Spring創建應用程序,有什么痛點問題呢? 很關鍵的一個問題,就是Spring集成各種技術的復雜性。

你可曾記得,之前你自己剛開始學習Spring,之后自己集成SSH、SSM各種框。隨着學習框架和技術越來越多,比如Mybatis、Hibernate、Struts2 、SpringMVC、Shiro、MySQL、ES、MongoDB、MQ等等。幾乎每學習使用一個其他框架或者技術,自己就要整合一大堆配置。隨着技術應用越多,這個是很令人頭疼的問題。

之前我們都是自己來整合這些框架,有了SpringBoot之后,我們可以通過自動起步依賴的starter,自動裝配配置,來解決各種框架整合帶來的復雜、重復的配置。如下圖所示:

file

有了SpringBoot之后,可以通過官方或者自定義一些starter起步自動依賴,來實現各種技術的自動裝配配置,大大減少了各種技術的整合和使用成本。

當然,使用SpringBoot這個功能,你一定要對自動裝配配置的原理有清晰的理解和認識,這樣才能駕馭了好它,不然反而會帶來更多的麻煩和問題。這個之后我們詳細帶大家分析SpringBoot的這些原理的,讓大家更好的可以掌握SpringBoot。

3、SpringBoot提供了很多便利的功能和擴展點

在我的理解中,SpringBoot除了上述的兩個特點外,剩下的就是它的一些便利的功能和擴展點了。比如官網中提到的多環境配置Profile、日志組件的可插拔Logging、各種技術的便捷整合使用等等,還有整個SpringBoot的啟動過程設置了許多擴展點。如下圖所示:

file

其實還有很多,有耐心的同學可以每天看一小節SpringBoot的官方文檔去了解下,也可以跟着成長記,一起分析和成長。

當你對SpringBoot的使用、原理、甚至是源碼,有着越來越多的認識后,希望每個人都可以成為SpringBoot的專家,精通SpringBoot。

小結

今天除了認識SpringBoot的功能特點,更重要的是學習了幾個重要的思想。這里簡單小結下。

學習到的主要知識點:

1、認識SpringBoot(如何從官網認識一個技術)

1)官方核心定義了一個SpringApplication的概念,實現web應用的新流程,支持自己內嵌了一個web容器

2)官方給出了可擴展配置,便捷的和Spring整合各種技術

3)提供了各種便捷的功能,如Profile多環境配置,Logging靈活的日志組件插拔、各種技術的便捷使用等等。

2、自己對SpringBoot功能的思考

SpringBoot定義了新的web應用啟動流程、SpringBoot的自動裝配配置解決了Spring集成各種技術的復雜性、SpringBoot提供了很多便利的功能和擴展點

通過如何從官網認識一個技術(SpringBoot)的功能,學習了一些思想。

學習到的關鍵思想:

1)對待新知識和新技術,永遠要抱着思考的想法,在不斷學習中反復思考。古話說的好,學而不思則罔,思而不學則殆。就是這個意思。其實程序員寫代碼的時候,也一樣,思想遠遠比方法重要。所以我們自己寫代碼也好,理解別人代碼也好。最關鍵的是理解它的思想,而不是僅僅簡單的使用它,了解它的流程之類的。

2)先脈絡后細節的思想,比如無論是閱讀文檔、書籍、代碼、畫圖等等一切,都可以按照先脈絡后細節的思想來。

本文由博客群發一文多發等運營工具平台 OpenWrite 發布


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM