1. 程式人生 > >spring boot 學習筆記 (1) Spring Boot 介紹

spring boot 學習筆記 (1) Spring Boot 介紹

Spring Boot 是一套全新的框架,它來自於 Spring 大家族,因此 Spring 所有具備的功能它都有並且更容易使用;同時還簡化了基於 Spring 的應用開發,通過少量的程式碼就能建立一個獨立的、產品級別的 Spring 應用。

Spring Boot 特性

  • 使用 Spring 專案引導頁面可以在幾秒構建一個專案;
  • 方便對外輸出各種形式的服務,如 REST API、WebSocket、Web、Streaming、Tasks;
  • 非常簡潔的安全策略整合;
  • 支援關係資料庫和非關係資料庫;
  • 支援執行期內嵌容器,如 Tomcat、Jetty;
  • 強大的開發包,支援熱啟動;
  • 自動管理依賴;
  • 自帶應用監控;
  • 支援各種 IED,如 IntelliJ IDEA、NetBeans

Spring Boot 本身並不提供 Spring 框架的核心特性以及擴充套件功能,只是用於快速、敏捷地開發新一代基於 Spring 框架的應用程式。同時它集成了大量常用的第三方庫配置(如 Redis、MongoDB、JPA、RabbitMQ、Quartz 等),Spring Boot 應用中這些第三方庫幾乎可以零配置進行開箱即用,大部分的 Spring Boot 應用都只需要非常少量的配置程式碼,開發者能夠更加專注於業務邏輯。

使用 Spring Boot 開發專案,有以下幾方面優勢:

  • Spring Boot 使開發變得簡單,提供了豐富的解決方案,快速整合各種解決方案提升開發效率。
  • Spring Boot 使配置變得簡單,提供了豐富的 Starters,整合主流開源產品往往只需要簡單的配置即可。
  • Spring Boot 使部署變得簡單,其本身內嵌啟動容器,僅僅需要一個命令即可啟動專案,結合 Jenkins、Docker 自動化運維非常容易實現。
  • Spring Boot 使監控變得簡單,自帶監控元件,使用 Actuator 輕鬆監控服務各項狀態。

 

Spring Boot 的核心:約定優於配置

 

在 Spring 體系中,Spring Boot JPA 就是約定優於配置最佳實現之一,不需要關注表結構,我們約定類名即是表名,屬性名即是表的欄位,String 對應 varchar,long 對應 bigint,只有需要一些特殊要求的屬性,我們再單獨進行配置,按照這個約定我們可以將以前的工作大大簡化。

 

 

Starters

Spring Boot Starters 基於約定優於配置的理念來設計,Spring Boot Starter 中有兩個核心元件:自動配置程式碼和提供自動配置模組及其它有用的依賴。也就意味著當我們專案中引入某個 Starter,即擁有了此軟體的預設使用能力,除非我們需要特定的配置,一般情況下我僅需要少量的配置或者不配置即可使用元件對應的功能。

Spring Boot 由眾多 Starter 組成,隨著版本的推移 Starter 家族成員也與日俱增。在傳統 Maven 專案中通常將一些層、元件拆分為模組來管理,以便相互依賴複用,在 Spring Boot 專案中我們則可以建立自定義 Spring Boot Starter 來達成該目的。

Spring Boot 擁有強大融合社群開源軟體的能力,在沒有使用 Spring Boot 之前,我們需要按照每個開源軟體的特性,將對應的元件包整合到我們的開發專案中,因為每個元件的設計理念和開發團隊都不一致,因此會有很多不同的呼叫風格在我們的專案中。

Spring Boot 整合了主流的開源軟體形成了一系列的 Starter,讓我們有了一致的程式設計體驗來整合各種軟體,Spring Boot 在整合的時候做了大量的優化,讓我們在整合的時候往往只需要很少的配置和程式碼就可以完成。可以說各種 Starters 就是 Spring Boot 最大的優勢之一。

以下為常用的 Spring Boot Starter 列表。

名稱 描述 Pom
spring-boot-starter 核心 Starter,包括自動配置支援,日誌和 YAML Pom
spring-boot-starter-activemq 用於使用 Apache ActiveMQ 實現 JMS 訊息 Pom
spring-boot-starter-amqp 用於使用 Spring AMQP 和 Rabbit MQ Pom
spring-boot-starter-cache 用於使用 Spring 框架的快取支援 Pom
spring-boot-starter-data-elasticsearch 用於使用 ElasticSearch 搜尋,分析引擎和 Spring Data ElasticSearch Pom
spring-boot-starter-data-jpa 用於使用 Hibernate 實現 Spring Data JPA Pom
spring-boot-starter-data-mongodb 用於使用基於文件的資料庫 MongoDB 和 Spring Data MongoDB Pom
spring-boot-starter-data-redis 用於使用 Spring Data Redis 和 Jedis 客戶端操作鍵—值資料儲存 Redis Pom
spring-boot-starter-jta-atomikos 用於使用 Atomikos 實現 JTA 事務 Pom
sring-boot-starter-mail 用於使用 Java Mail 和 Spring 框架 Email 傳送支援 Pom
spring-boot-starter-quartz 用於定時任務 Quartz 的支援 Pom
spring-boot-starter-security 對 Spring Security 的支援 Pom
spring-boot-starter-test 用於測試 Spring Boot 應用,支援常用測試類庫,包括 JUnit、Hamcrest 和 Mockito Pom
spring-boot-starter-thymeleaf 用於使用 Thymeleaf 模板引擎構建 MVC Web 應用 Pom
spring-boot-starter-validation 用於使用 Hibernate Validator 實現 Java Bean 校驗 Pom
spring-boot-starter-web 用於使用 Spring MVC 構建 Web 應用,包括 RESTful。Tomcat 是預設的內嵌容器 Pom
spring-boot-starter-websocket 用於使用 Spring 框架的 WebSocket 支援構建 WebSocket 應用 Pom

這裡只節選了我們最常使用的 Starter,完整的 Starter 參考這裡:Spring Boot application starters

因為 Spring Boot 足夠的強大,很多第三方社群都進行了主動的整合。比如:MyBatis、RabbitMQ(高階用法)等,第三方社群支援的列表,可以在這裡檢視 Community Contributions,可以看到社群貢獻的其他 Starters 列表。

 

Spring、Spring Boot 和 Spring Cloud 的關係

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

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

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

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性巧妙地簡化了分散式系統基礎設施的開發。服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用 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

總結

Spring Boot 誕生一方面是因為 Spring 自身發展所遇到的問題,另一方面在微服務思想誕生之際,急需要一款快速開發工具來實現微服務技術落地,在這樣的背景下誕生了 Spring Boot。

Spring Boot 整體的設計思想是:約定優於配置。依賴此設計思路,Spring Boot 進行了大刀闊斧的改革,讓開發、測試、部署更為便捷。眾多的 Starters 成就了 Spring Boot 的發展,讓使用 Spring Boot 開發專案變得更加簡單。