為什麼說Java 程式設計師必須掌握 Spring Boot?
大部分人選擇學習Java,自然是因為看上了Java的薪資待遇,java的地位可謂在程式設計界屬於大佬,最近Spring Boot 2.0 的推出來後,又激起了一陣學習 Spring Boot 的熱潮,那麼, 使用 Spring Boot 會帶來什麼樣的變革?一起來了解下 Spring Boot 到底是什麼?
一、什麼是 Spring Boot
Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。Spring Boot 簡化了基於 Spring Boot 為 Spring 平臺及第三方庫提供開箱即用的設定,這樣你就可以有條不紊地開始。Spring Boot 的核心思想就是約定大於配置,多數 Spring Boot 應用只需要很少的 Spring 配置。採用 Spring Boot 可以大大的簡化你的開發模式,所有你想整合的常用框架,它都有對應的元件支援。
二、Spring Boot 特性
1.Spring Boot 讓開發變得更簡單
Spring Boot 對開發效率的提升是全方位的,可以簡單做一下對比,在沒有使用 Spring Boot 之前開發一個 web 專案需要做哪些工作:
1)配置 web.xml,載入 Spring 和 Spring mvc
2)配置資料庫連線、配置 Spring 事務
3)配置載入配置檔案的讀取,開啟註解
4)配置日誌檔案
n) 配置完成之後部署 tomcat 除錯
可能你還需要考慮各個版本的相容性,jar 包衝突的各種可行性。那麼使用 Spring Boot 之後我們需要開發一個 web 專案需要哪些操作呢?
1)登入網址 選擇對應的元件
2)匯入專案,直接開發
上面的 N 步和下面的2步形成巨大的反差,這僅僅只是在開發環境搭建的這個方面,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 中包含了我們需要使用的各種測試場景,滿足我們日常專案的測試需求。
2.Spring Boot 讓配置變得更簡單
Spring Boot 讓配置變簡單,說到這裡我們就需要了解一下 Spring Boot 的核心思想:約定優於配置。那麼什麼是約定優於配置呢?約定優於配置(convention over configuration),也稱作按約定程式設計,是一種軟體設計正規化,旨在減少軟體開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。本質是說,開發人員僅需規定應用中不符約定的部分。例如,如果模型中有個名為 User 的類,那麼資料庫中對應的表就會預設命名為 user。只有在偏離這一約定時,例如將該表命名為“user_info”,才需寫有關這個名字的配置。
3.Spring Boot 讓部署變得更簡單
說起 Spring Boot 讓部署變簡單,就不得不說 Spring Boot 內嵌容器。內嵌容器不只讓部署變得簡單,其實在開發除錯階段也會帶來非常大的便利性,對比以往開發 Web 專案時配置 Tomcat 的繁瑣,會讓大家使Spring Boot 內嵌容器開發時有更深的感觸。使用 Spring Boot 開發 Web 專案,讓我們不需要關心容器的環境問題,專心寫業務程式碼即可。Jenkins 是目前持續構建領域使用最廣泛的工具之一,Jenkins 是一個獨立的開源自動化伺服器,可用於自動化各種任務,如構建,測試和部署軟體。Jenkins 可以通過本機系統包 Docker 安裝,甚至可以通過安裝 Java Runtime Environment 的任何機器獨立執行。
說直白一點 Jenkins 就是專門來負責如何將程式碼變成可執行的程式包,將它部署到目標伺服器中,並對其運營狀態(日誌)進行監控的軟體。自動化、效能、打包、部署、釋出、釋出結果自動化驗證、介面測試、單元測試等等關於我們打包測試部署的方方面面 Jenkins 都可以很友好的支援。使用 Jenkins 部署 Spring Boot 專案非常簡單,只需要前期做一些簡單的配置,當我們需要釋出專案時只需要點選專案對應的釋出按鈕,就可以將專案從版本庫中拉取、打包、釋出到目標伺服器中,大大簡化了運維後期的部署工作。
虛擬化技術的發展給我們帶來了更多的可能性,我們可以利用容器化技術,將 Spring Boot 專案做成映象,根據容器叢集的策略來實現彈性擴容、動態部署等。所以 Spring Boot + Docker + Jenkins 會將 Spring Boot 專案的部署做得更簡單化、智慧化。
4.Spring Boot 讓監控變得更簡單
可以說 Spring Boot 就是一款自帶監控的開源軟體,在設計之初就考慮到應用的監控問題,專門提供了一款監控元件來完成這個工作,這個元件就是Spring Boot Actuator ,Spring Boot Actuator 是 Spring Boot 提供的對應用系統監控的整合功能,可以檢視應用配置的詳細資訊,例如自動化配置資訊、建立的 Spring beans 以及一些環境屬性等。當然 Spring Boot Actuator 雖然可以監控一個 Spring Boot 應用的健康情況,實際上現在的系統都是需要很多的服務相互配合來完成工作,如何通過一個監控軟體來監控所以的 Spring Boot 專案將變得比較緊迫。在開源界也有人意識到了這個問題,並且基於 Spring boot actuator 做出了一款強大的監控軟體,這個軟體就是 Spring Boot admin 。Spring Boot Admin 是一個管理和監控 Spring Boot 應用程式的開源軟體。每個應用都認為是一個客戶端,通過 HTTP 或者使用 Eureka 註冊到 admin server 中進行展示,Spring Boot Admin UI 部分使用 AngularJs 將資料展示在前端。
Spring Boot Admin 是一個針對 spring-boot 的 actuator 介面進行UI美化封裝的監控工具。他可以:在列表中瀏覽所有被監控 spring-boot 專案的基本資訊,詳細的 Health 資訊、記憶體資訊、JVM 資訊、垃圾回收資訊、各種配置資訊(比如資料來源、快取列表和命中率)等,還可以直接修改 logger 的 level 。使用 Spring Boot Admin 不僅可以監控 Spring Boot 專案,還可以監控 Spring Cloud 專案,因此使用了 Spring Boot 專案之後我們監控 Spring Boot 叢集效果如下:
簡單、直觀、易用是它的特點,針對一些特殊情況還可以提供報警服務。所以說使用 Spring Boot Actuator 解決了單個 Spring Boot 的監控問題,使用 Spring Boot Admin 就是解決了整個叢集監控的問題。
為了讓學習變得輕鬆、高效,今天給大家免費分享一套Java入門教學資源。幫助大家在成為Java架構師的道路上披荊斬棘。需要入門的資料歡迎加入學習交流群:9285,05736