身爲Java程式設計師爲什麼要學習 Spring Boot?

身為Java程序員為什麼要學習 Spring Boot?

鎮樓小姐姐

36份一線互聯網Java面試電子書

84個Java稀缺面試題視頻


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

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

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

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

為什麼學習Spring Boot

從Spring官方來看

我們打開 Spring 的官方網站,可以看到下圖:

身為Java程序員為什麼要學習 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 相關達人課課程屆時也會上線)。

從Spring Boot的優點來看

Spring Boot 有哪些優點?主要給我們解決了哪些問題呢?我們以下圖來說明:

身為Java程序員為什麼要學習 Spring Boot?

良好的基因

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

身為Java程序員為什麼要學習 Spring Boot?

簡化編碼

舉個例子,比如我們要創建一個 web 項目,使用 Spring 的朋友都知道,在使用 Spring 的時候,需要在 pom 文件中添加多個依賴,而 Spring Boot 則會幫助開發著快速啟動一個 web 容器,在 Spring Boot 中,我們只需要在 pom 文件中添加如下一個 starter-web 依賴即可。

org.springframework.boot

spring-boot-starter-web

我們點擊進入該依賴後可以看到,Spring Boot 這個 starter-web 已經包含了多個依賴,包括之前在 Spring 工程中需要導入的依賴,我們看一下其中的一部分,如下:

org.springframework

spring-web

5.0.7.RELEASE

compile

org.springframework

spring-webmvc

5.0.7.RELEASE

compile

由此可以看出,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 是未來發展的一個大趨勢。


分享到:


相關文章: