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 開發項目變得更加簡單。

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