爲何要學習 Spring Boot?

咱們知道,從 2002 年開始,Spring 一直在飛速的發展,現在已經成爲了在Java EE(Java Enterprise Edition)開發中真正意義上的標準,可是隨着技術的發展,Java EE使用 Spring 逐漸變得笨重起來,大量的 XML 文件存在於項目之中。繁瑣的配置,整合第三方框架的配置問題,致使了開發和部署效率的下降。java

2012 年 10 月,Mike Youngstrom 在 Spring jira 中建立了一個功能請求,要求在 Spring 框架中支持無容器 Web 應用程序體系結構。他談到了在主容器引導 spring 容器內配置 Web 容器服務。這是 jira 請求的摘錄:web

我認爲 Spring 的 Web 應用體系結構能夠大大簡化,若是它提供了從上到下利用 Spring 組件和配置模型的工具和參考體系結構。在簡單的 main()方法引導的 Spring 容器內嵌入和統一這些經常使用Web 容器服務的配置。spring

這一要求促使了 2013 年初開始的 Spring Boot 項目的研發,到今天,Spring Boot 的版本已經到了 2.0.3 RELEASE。Spring Boot 並非用來替代 Spring 的解決方案,而是和 Spring 框架緊密結合用於提高 Spring 開發者體驗的工具。同時它集成了大量經常使用的第三方庫配置,Spring Boot應用中這些第三方庫幾乎能夠是零配置的開箱即用(out-of-the-box),大部分的 Spring Boot 應用都只須要很是少許的配置代碼(基於 Java 的配置),開發者可以更加專一於業務邏輯。tomcat

爲何學習Spring Boot
從Spring官方來看
咱們打開 Spring 的官方網站,能夠看到下圖:安全

clipboard.png

圖0:爲何要學習Spring Boot?服務器

咱們能夠看到圖中官方對 Spring Boot 的定位:Build Anything, Build任何東西。Spring Boot旨在儘量快地啓動和運行,而且只需最少的 Spring 前期配置。 同時咱們也來看一下官方對後面兩個的定位:架構

SpringCloud:Coordinate Anything,協調任何事情;
SpringCloud Data Flow:Connect everything,鏈接任何東西。併發

仔細品味一下,Spring 官網對 Spring Boot、SpringCloud 和 SpringCloud Data Flow三者定位的措辭很是有味道,同時也能夠看出,Spring 官方對這三個技術很是重視,是如今以及從此學習的重點(SpringCloud 相關達人課課程屆時也會上線)。mvc

從Spring Boot的優勢來看
Spring Boot 有哪些優勢?主要給咱們解決了哪些問題呢?咱們如下圖來講明:app

clipboard.png

圖1:爲何要學習Spring Boot?

良好的基因
Spring Boot 是伴隨着 Spring 4.0 誕生的,從字面理解,Boot是引導的意思,所以 Spring Boot 旨在幫助開發者快速搭建 Spring 框架。Spring Boot 繼承了原有 Spring 框架的優秀基因,使 Spring 在使用中更加方便快捷。

clipboard.png

圖2:爲何要學習Spring Boot?

簡化編碼
舉個例子,好比咱們要建立一個 web 項目,使用 Spring 的朋友都知道,在使用 Spring 的時候,須要在 pom 文件中添加多個依賴,而 Spring Boot 則會幫助開發着快速啓動一個 web 容器,在 Spring Boot 中,咱們只須要在 pom 文件中添加以下一個 starter-web 依賴便可。

<dependency>

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

</dependency>
咱們點擊進入該依賴後能夠看到,Spring Boot 這個 starter-web 已經包含了多個依賴,包括以前在 Spring 工程中須要導入的依賴,咱們看一下其中的一部分,以下:

<!-- .....省略其餘依賴 -->
複製代碼
<dependency>

<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.7.RELEASE</version>
<scope>compile</scope>

</dependency>
<dependency>

<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.7.RELEASE</version>
<scope>compile</scope>

</dependency>
複製代碼
由此能夠看出,Spring Boot 大大簡化了咱們的編碼,咱們不用一個個導入依賴,直接一個依賴便可。

簡化配置
Spring 雖然使Java EE輕量級框架,但因爲其繁瑣的配置,一度被人認爲是「配置地獄」。各類XML、Annotation配置會讓人眼花繚亂,並且配置多的話,若是出錯了也很難找出緣由。Spring Boot更多的是採用 Java Config 的方式,對 Spring 進行配置。舉個例子:

我新建一個類,可是我不用 @Service註解,也就是說,它是個普通的類,那麼咱們如何使它也成爲一個 Bean 讓 Spring 去管理呢?只須要@Configuration 和@Bean兩個註解便可,以下:

複製代碼
public class TestService {

public String sayHello () {
    return "Hello Spring Boot!";
}

}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JavaConfig {

@Bean
public TestService getTestService() {
    return new TestService();
}

}
複製代碼
@Configuration表示該類是個配置類,@Bean表示該方法返回一個 Bean。這樣就把TestService做爲 Bean 讓 Spring 去管理了,在其餘地方,咱們若是須要使用該 Bean,和原來同樣,直接使用@Resource註解注入進來便可使用,很是方便。

@Resource
private TestService testService;
另外,部署配置方面,原來 Spring 有多個 xml 和 properties配置,在 Spring Boot 中只須要個 application.yml便可。

簡化部署
在使用 Spring 時,項目部署時須要咱們在服務器上部署 tomcat,而後把項目打成 war 包扔到 tomcat裏,在使用 Spring Boot 後,咱們不須要在服務器上去部署 tomcat,由於 Spring Boot 內嵌了 tomcat,咱們只須要將項目打成 jar 包,使用 java -jar xxx.jar一鍵式啓動項目。

另外,也下降對運行環境的基本要求,環境變量中有JDK便可。

簡化監控
咱們能夠引入 spring-boot-start-actuator 依賴,直接使用 REST 方式來獲取進程的運行期性能參數,從而達到監控的目的,比較方便。可是 Spring Boot 只是個微框架,沒有提供相應的服務發現與註冊的配套功能,沒有外圍監控集成方案,沒有外圍安全管理方案,因此在微服務架構中,還須要 Spring Cloud 來配合一塊兒使用。

從將來發展的趨勢來看
微服務是將來發展的趨勢,項目會從傳統架構慢慢轉向微服務架構,由於微服務可使不一樣的團隊專一於更小範圍的工做職責、使用獨立的技術、更安全更頻繁地部署。而 繼承了 Spring 的優良特性,與 Spring 一脈相承,並且 支持各類REST API 的實現方式。Spring Boot 也是官方大力推薦的技術,能夠看出,Spring Boot 是將來發展的一個大趨勢。

免費Java資料領取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring
Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高併發分佈式、大數據、機器學習等技術。
傳送門: https://mp.weixin.qq.com/s/Jz...
相關文章
相關標籤/搜索