Spring Boot 讓開發變得更簡單
Spring Boot 對開發效率的提升是全方位的,我們可以簡單做一下對比:
在沒有使用 Spring Boot 之前我們開發一個 web 項目需要做哪些工作:
- 1)配置 web.xml,加載 Spring 和 Spring mvc
- 2)配置數據庫連接、配置 Spring 事務
- 3)配置加載配置文件的讀取,開啟注解
- 4)配置日志文件
- …
- n) 配置完成之后部署 tomcat 調試
可能你還需要考慮各個版本的兼容性,jar 包沖突的各種可行性。
Spring Boot 使測試變得更簡單
Spring Boot 對測試的支持不可謂不強大,Spring Boot 內置了7種強大的測試框架:
- JUnit: 一個 Java 語言的單元測試框架
- Spring Test & Spring Boot Test:為 Spring Boot 應用提供集成測試和工具支持
- AssertJ:支持流式斷言的 Java 測試框架
- Hamcrest:一個匹配器庫
- Mockito:一個 java mock 框架
- JSONassert:一個針對 JSON 的斷言庫
- JsonPath:JSON XPath 庫
我們只需要在項目中引入spring-boot-start-test
依賴包,就可以對數據庫、Mock、 Web 等各種情況進行測試。
Spring Boot Test 中包含了我們需要使用的各種測試場景,滿足我們日常項目的測試需求。
Spring Boot 讓配置變得更簡單
Spring Boot 讓配置變簡單,說到這里我們就需要了解一下 Spring Boot 的核心思想:約定優於配置。那么什么是約定優於配置呢?
約定優於配置(convention over configuration),也稱作按約定編程,是一種軟件設計范式,旨在減少軟件開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。
Spring 、Spring Boot 和 Spring Cloud 的關系
Spring 最初最核心的兩大核心功能 Spring Ioc 和 Spring Aop 成就了 Spring,Spring 在這兩大核心的功能上不斷的發展,才有了 Spring 事務、Spirng Mvc 等一系列偉大的產品,最終成就了 Spring 帝國,到了后期 Spring 幾乎可以解決企業開發中的所有問題。
Spring Boot 是在強大的 Spring 帝國生態基礎上面發展而來,發明 Spring Boot 不是為了取代 Spring ,是為了讓人們更容易的使用 Spring 。所以說沒有 Spring 強大的功能和生態,就不會有后期的 Spring Boot 火熱, Spring Boot 使用約定優於配置的理念,重新重構了 Spring 的使用,讓 Spring 后續的發展更有生命力。
Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用 Spring Boot 的開發風格做到一鍵啟動和部署。
Spring 並沒有重復制造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過 Spring Boot 風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。
根據上面的說明我們可以看出來,Spring Cloud 是為了解決微服務架構中服務治理而提供的一系列功能的開發框架,並且 Spring Cloud 是完全基於 Spring Boot 而開發,Spring Cloud 利用 Spring Boot 特性整合了開源行業中優秀的組件,整體對外提供了一套在微服務架構中服務治理的解決方案。
綜上我們可以這樣來理解,正是由於 Spring Ioc 和 Spring Aop 兩個強大的功能才有了 Spring ,Spring 生態不斷的發展才有了 Spring Boot ,使用 Spring Boot 讓 Spring 更易用更有生命力,Spring Cloud 是基於 Spring Boot 開發的一套微服務架構下的服務治理方案。
用一組不太合理的包含關系來表達它們之間的關系。
Spring ioc/aop > Spring > Spring Boot > Spring Cloud