【接口自動化系列】1-走進Java接口測試之流行框架SpringBoot(概念篇)

 

引言

說起 SpringBoot 不得不先了解一下 Spring 這個企業,不僅因爲 Spring Boot 來源於 Spring 大家族,而是 Spring Boot 的誕生和 Sping 框架的發展息息相關。

Spring 歷史

2002 年正是 Java EE 和 EJB 大行其道的時候,很多知名公司都是採用此技術方案進行項目開發。一個美國的小夥子 Rod Johnson 認爲 EJB 太過臃腫,並不是所有的項目都需要使用 EJB 這種大型框架,應該會有一種更好的方案來解決這個問題。於是他寫了一本書《 Expert One-on-One J2EE 》,介紹了當時 Java 企業應用程序開發的情況,並指出了 Java EE 和 EJB 組件框架中存在的一些主要缺陷。在這本書中他提出了一個基於普通 Java 類和依賴注入的更簡單的解決方案,這也就是 Spring 的前身。

隨後 Spring 發展進入快車道:

  • 2004 年 03 月,1.0 版發佈。

  • 2006 年 10 月,2.0 版發佈。

  • 2007 年 11 月更名爲 SpringSource,同時發佈了 Spring 2.5。

  • 2009 年 12 月,Spring 3.0 發佈。

  • 2013 年 12 月,Pivotal 宣佈發佈 Spring 框架 4.0。

  • 2017 年 09 月,Spring 5.0 發佈。

Spring 1.x 時代

在 Spring1.x 時代,都是通過 xml 文件配置 bean,隨着項目的不斷擴大,需要將 xml 配置分放到不同的配置文件中,需要頻繁的在 java 類和xml 配置文件中切換。

Spring 2.x 時代

隨着 JDK 1.5 帶來的註解支持,Spring2.x 可以使用註解對 Bean 進行申明和注入,大大的減少了 xml 配置文件,同時也大大簡化了項目的開發。 那麼,問題來了,究竟是應該使用 xml 還是註解呢?

最佳實踐:

  • 應用的基本配置用 xml,比如:數據源、資源文件等;

  • 業務開發用註解,比如:Service 中注入 bean 等;

Spring 3.x 到 Spring 4.x

從 Spring3.x 開始提供了 Java 配置方式,使用 Java 配置方式可以更好的理解你配置的 Bean,並且 Spring4.x 和SpringBoot 都推薦使用 java 配置的方式

在Java開發領域,Sping 應用很廣,它的極致目標是簡化Java開發,從2003年嶄露頭角至今,估計連 Rod Johnson 本人都沒有想到,在 Java 領域,它會產生如此深遠的影響。

SpringBoot 的誕生

隨着使用 Spring 進行開發的個人和企業越來越多,Spring 也從單一簡潔的小框架變成一個大而全的開源軟件,Spring 的邊界不斷擴充,到了後來 Spring 幾乎可以做任何事情了,可以集成了市面上主流的開源軟件、中間件。 而Spring 每集成一個開源軟件,就需要增加一些基礎配置,慢慢的隨着開發的項目越來越龐大,往往需要集成很多開源軟件,因此後期使用 Spring 開發大型項目需要引入很多配置文件,太多的配置非常難以理解,並容易配置出錯,到了後來人們甚至稱 Spring 爲配置災難。

什麼是Springboot

在上述環境下,SpringBoot 應運而生。它使用“習慣優於配置”(項目中存在大量的配置,此外還內置一個習慣性的配置,讓你無須手動進行配置)的理念讓 Java 項目快速運行起來。使用 SpringBoot 很容易創建一個獨立運行(運行 Jar ,內嵌 Servlet 容器)、準生產級別的基於 Spring 的框架項目,使用 SpringBoot 你可以不用或者只需要很少的 Spring 配置。 用白話來理解,就是 SpringBoot 其實不是什麼新框架,它默認配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,SpringBoot 整合了幾乎所有的框架。 

SpringBoot 特點

  • 使用 Spring 項目引導頁面可以在幾秒構建一個項目

  • 方便對外輸出各種形式的服務,如 REST API、WebSocket、Web、Streaming、Tasks

  • 非常簡潔的安全策略集成

  • 支持關係數據庫和非關係數據庫

  • 支持運行期內嵌容器,如 Tomcat、Jetty

  • 強大的開發包,支持熱啓動

  • 自動管理依賴

  • 自帶應用監控

  • 支持各種 IDE,如 IntelliJ IDEA 、NetBeans

SpringBoot 優勢

SpringBoot 開發更簡單

SpringBoot 對開發效率的提升是全方位的,我們可以簡單做一下對比:

使用 Spring 我們開發一個 web 項目需要做哪些工作:

1)配置 web.xml,加載 Spring 和 Spring mvc 

2)配置數據庫連接、配置 Spring 事務 

3)配置加載配置文件的讀取,開啓註解 

4)配置日誌文件

 … 

n) 配置完成之後部署 tomcat 調試 可能你還需要考慮各個版本的兼容性,jar 包衝突的各種可行性。

那麼使用 SpringBoot 之後我們需要開發一個 web 項目需要哪些操作呢?

  • 登錄網址http://start.spring.io/選擇對應的組件直接下載

  • 導入項目,直接開發

上面的 N 步和下面的 2 步形成巨大的反差,這僅僅只是在開發環境搭建方面。

SpringBoot 測試更簡單

SpringBoot 對測試的支持強大,SpringBoot 內置了 7 種強大的測試框架:

  • JUnit: 一個 Java 語言的單元測試框架

  • Spring Test & SpringBoot Test:爲 Spring Boot 應用提供集成測試和工具支持

  • AssertJ:支持流式斷言的 Java 測試框架

  • Hamcrest:一個匹配器庫

  • Mockito:一個 java mock 框架

  • JSONassert:一個針對 JSON 的斷言庫

  • JsonPath:JSON XPath 庫

只需要在項目中引入 spring-boot-starter-test 依賴包,就可以對數據庫、Mock、 Web 等各種情況進行測試。

SpringBoot 配置更簡單

SpringBoot 的核心思想:約定優於配置

約定優於配置(convention over configuration),也稱作按約定編程,是一種軟件設計範式,旨在減少軟件開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。

本質是說,開發人員僅需規定應用中不符約定的部分。例如,如果模型中有個名爲 User 的類,那麼數據庫中對應的表就會默認命名爲 user。只有在偏離這一約定時,例如將該表命名爲 ”user_info”,才需寫有關這個名字的配置。

SpringBoot 部署更簡單

SpringBoot 內嵌容器,不僅僅讓部署變得簡單,其實在開發調試階段也非常便利,對比以往 Spring 開發 Web 項目時配置 Tomcat 的繁瑣。使用 SpringBoot 開發 Web 項目,讓我們不需要關心容器的環境問題,專心寫業務代碼即可。

Jenkins 是目前持續構建領域使用最廣泛的工具之一,使用 Jenkins 部署 SpringBoot 項目非常簡單,大家想繼續瞭解可以參考的文章:性能環境之Jenkins+Maven自動化部署SpringBoot壓測環境(Docker篇),只需要前期做一些簡單的配置,所以 SpringBoot + Docker + Jenkins 會將 SpringBoot 項目的部署做得更簡單。

Spring 、SpringBoot 和 SpringCloud 的關係

Spring 兩大核心功能 Ioc 和 Aop 成就了 Spring,Spring 在這兩大核心的功能上不斷的發展,纔有了 Spring 事務、Spring Mvc 等一系列偉大的產品,最終成就了 Spring 帝國,到了後期 Spring 幾乎可以解決企業開發中的所有問題。

SpringBoot 是在強大的 Spring 帝國生態基礎上面發展而來,發明 Spring Boot 不是爲了取代 Spring ,是爲了讓人們更容易的使用 Spring 。所以說沒有 Spring 強大的功能和生態,就不會有現在的 SpringBoot 火熱, SpringBoot 使用約定優於配置的理念,重新重構了 Spring 的使用,讓 Spring 後續的發展更有生命力。

Spring Cloud 是一系列框架的有序集合。它利用 SpringBoot 的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用 SpringBoot 的開發風格做到一鍵啓動和部署。

Spring 並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過 SpringBoot 風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分佈式系統開發工具包。

Spring Cloud 是爲了解決微服務架構中服務治理而提供的一系列功能的開發框架,並且 Spring Cloud 是完全基於 SpringBoot 而開發,Spring Cloud 利用 SpringBoot 特性整合了開源行業中優秀的組件,整體對外提供了一套在微服務架構中服務治理的解決方案。 

綜上所述,正是由於 Spring Ioc 和 Spring Aop 兩個強大的功能纔有了 Spring ,Spring 生態不斷的發展纔有了 SpringBoot ,使用 SpringBoot 讓 Spring 更易用更靈活,Spring Cloud 是基於 SpringBoot 開發的一套微服務架構下的服務治理方案。

用一個簡單的包含關係來表達它們之間的關係。

 Spring ioc/aop > Spring > Spring Boot > Spring Cloud

小結

天下“武功”,爲快不破。好的開源軟件也應該如此,SpringBoot 的出現正是讓 Java 編程變得更簡單、更快速。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章