Spring Boot:從炒作到成熟的基礎技術?
依賴注入是Spring的基本元件之一,也可以使用其他框架或自己完成。那麼為什麼要使用Spring?開發人員的生產力就是答案。
Spring Framework的核心任務一直是提供依賴注入(DI)。Spring Boot還有助於管理依賴項,配置事務等等 - 但它只是達到目的一種手段而已。因此,開發人員專案不一定需要Spring也可以輕鬆開發純依賴注入。或者,可以使用許多小框架中的一個。例如,可用於快速開發服務和部署HTTP端點的純Web框架就是理想的選擇,一個代表是關於“無容器”的Micronaut,它不使用servlet容器,而是基於Netty的IO非阻塞。
支援Spring和Spring Boot的論點之一就是開發人員的工作效率。只要沒有嚴重的理由反對,應該始終使用Spring Boot設定實現基於Spring的新應用程式。結果是應用程式框架始終看起來相同,並且可以進行類似配置。標準任務(例如配置資料庫連線,無論是關聯式資料庫還是圖形資料庫)都可以同樣好地執行。這也適用於應用程式與其他服務的整合:宣告啟動程式的依賴項,並且可以在沒有Spring Boot自動配置機制生成程式碼的情況下進行配置。
外部配置是另一項重要的生產力功能:如果預設值不合適,通常可以在外部進行調整。這些是屬性或YAML格式的檔案,環境變數,命令列引數和類似機制。除了諸如事務和快取的跨平臺處理,測試框架,框架內部事件系統和諸如Spring Data和整合之類的令人興奮的專案之類的方面之外,這些機制是使用Spring的充分理由。
Spring Boot和微服務
關於微服務的炒作,長期以來被視為所有IT問題的靈丹妙藥,正在逐漸減弱並屈服於更細微的觀點。Spring Boot與術語微服務密切相關。這來自哪裡?
Spring Boot的基礎知識出現在微服務的最初繁榮階段。Spring Boot經常與Spring Cloud一起使用。除此之外,Spring Cloud還包括部分開源Netflix堆疊,以及許多其他模組,這些模組極大地簡化了建立分散式,基於雲的方法的過程。
但是,Spring Boot也可以很好地構建經典的單片單體巨石應用程式或批處理過程,並且它不是一個微服務框架,因為它經常被誤傳。因此,沒有銀彈可以提前避免可能的問題,並在每種情況下都提供完美的架構。
SpringBoot整合
Spring Boot提供了各種專案(資料庫,事件儲存等)的整合。整合通常是節省資源的,並且可以透過所提到的啟動器機制來提供。只有依賴項的宣告才會啟用自動配置,以便在此之前它不會對應用程式的資源消耗做出貢獻。
Spring Boot專案可能非常小,但也非常大 - 取決於它所需的整合。這種靈活性在作者對專案中使用Spring Boot的估計中有所體現。典型的標準專案不存在,因為大多數域具有特殊的特徵。但是,通常沒有時間為需要互動的每個服務編寫自己的整合。
核心開發
核心開發涵蓋了促進Spring和Spring Boot實際工作的所有主題,還包括非功能性主題,例如對快取的支援。
Spring DevTools加速了開發。它們允許在修改類檔案後部分重新載入Spring上下文。之後,Spring Boot通常會快速啟動,但重新載入僅更改的部件會更快。
配置處理器有助於將您自己的應用程式的配置外包給專用類:它生成可在所有主要IDE中讀取的後設資料。它們有助於編寫application.properties或記錄自己應用程式的可能配置。
快取,方面和驗證部分在Spring Framework本身中實現。但是,就像安全性和會話支援一樣,它們只是Spring Boot自動配置的跨應用程式方面。
資料庫
Liquibase和Flyway自動支援Spring Boot而無需進一步配置 - 它們與曾經配置的資料來源一起工作。如果Spring Boot用於開發關聯式資料庫微服務,那麼問題就出現了:誰對資料庫模式擁有主權?同樣,Spring Boot在許多情況下提供了有用的工具。但是,該工具的有用應用由開發人員負責。
支援各種非關聯式資料庫:Redis,Cassandra,Couchbase等,Spring Boot也支援像Neo4j這樣的圖形資料庫和像Mongo或Elasticsearch這樣的文件儲存。通常,每個資料庫都有單獨的Spring Data模組。與JDBC / JPA環境一樣,Spring Boot提供了配置URL和憑據的一致機制。
Web框架
Spring Web MVC和Spring WebFlux都是Spring Framework的一部分,兩者是並行的。兩者都是Spring Boot自動配置的面向請求的Web框架。對於面向元件的框架Vaadin,可以使用啟動器。喜歡採用面向資源的方法的開發人員可以直接使用Spring Boot中的Jersey 2,而無需進一步配置走彎路。
在伺服器上生成HTML內容並不流行。但模板引擎Thymeleaf,Freemarker,Mustache和Groovy模板可以直接與Spring Boot一起使用。
應用程式的實際附加值只有在進入生產操作時才會變得明顯。諸如Actuator之類的SpringBoot啟動模組對此有所幫助。它提供狀態和健康端點的Web介面,並透過JMX提供有關應用程式的資訊。Micrometer是一個收集系統,應用程式和系統指標的新專案。它可以透過Actuator進入應用程式並自動配置。或者,Micrometer可以獨立於Spring Boot使用。
Spring Boot 2
Spring Boot 2中的一個主要特點是反應式程式設計模型。它們解決了有效使用資源的問題,尤其是執行緒。反應式程式設計不僅關係到HTTP請求的處理相關的,而且在資料庫有關。
像Akka,Vert.x或Lagom這樣的框架處於最前沿,但Spring提供了許多公司建立的基礎技術的優勢。因此,它擁有龐大的使用者群和全面的知識。隨著新資料型別(如Mono和Flux)以及支援基礎架構的順利引入,Spring 5和Spring Boot 2已成功維護並將這些知識提升到一個新的水平。
Spring Boot 2釋出半年後,Redis,MongoDB,Cassandra和Couchbase的響應式驅動程式已準備就緒。Reactive Cloud Streams提供與Kafka或RabbitMQ的響應式連線。
Spring Boot 2.1
2018年9月下旬在華盛頓的SpringOne平臺並行釋出Spring Framework 5.1。與此同時,Spring Boot 2.1也可用。Spring Framework的特別亮點一方面是JDK 11的支援
透過Spring Fu,開發了一個孵化器專案,其中可以開發和測試新的功能性跳躍功能,特別是在Kotlin方向。其中一些函式程式設計已經流入Spring Framework。
也突出了JUnit 5的全面支援。與年初相比,Maven和Gradle的構建管理工具的顯著改進支援,幾乎沒有理由在新的Spring專案中放棄JUnit 5。
Spring Boot 2.1完全基於現代容器構建,需要Tomcat 9和Undertow 2。同樣,完全支援JDK 11,因此開發人員不再需要依賴Java 8。在安全性方面,spring boot 2.1還實現了核心OAuth 2資源伺服器支援。
旨在提高生產力的高階功能和新功能列表很長。例如,允許將不同的Java記錄器組合在一起並配置。
相關文章
- Spring Boot 基礎Spring Boot
- 寶鯤財經:最基礎的炒匯技術盤點
- Spring Boot核心技術Spring Boot
- Spring boot學習(二) Spring boot基礎配置Spring Boot
- Spring Boot 學習-基礎Spring Boot
- Spring Boot:使用Redis儲存技術Spring BootRedis
- Spring Boot基礎教程:EhCache快取的使用Spring Boot快取
- spring boot-整合RabbitMq(RabbitMq基礎)Spring BootMQ
- 從基礎研究、高校合作到產業創新,openGauss社群匯聚高校產業
- Spring Boot學習筆記---Spring Boot 基礎及使用idea搭建專案Spring Boot筆記Idea
- Spring Boot系列之一:如何快速熟悉Spring技術棧Spring Boot
- spring cloud Alibaba 之 spring boot 基礎學習筆記CloudSpring Boot筆記
- 從零搭建Spring Boot腳手架(1):開篇以及技術選型Spring Boot
- 現代通訊技術基礎中的基礎
- Spring Boot 2.x基礎教程:使用MongoDBSpring BootMongoDB
- Spring Boot 定時任務的技術選型對比Spring Boot
- Spring Boot 2.x基礎教程:EhCache快取的使用Spring Boot快取
- Spring Boot乾貨系列總綱 | 掘金技術徵文Spring Boot
- 技術乾貨:spring boot面試題及答案Spring Boot面試題
- Spring Boot 2.0深度實踐之核心技術篇Spring Boot
- 技術分享:瞭解 Spring Boot 啟動類 SpringApplicationSpring BootAPP
- Spring Boot 2.x基礎教程:快速入門Spring Boot
- Spring Boot 2.x基礎教程:使用JdbcTemplate訪Spring BootJDBC
- 基於Spring Batch的Spring Boot的教程 - BaeldungBATSpring Boot
- Spring Boot核心技術之Restful對映以及原始碼的分析Spring BootREST原始碼
- 微服務架構 spring boot 那些最基礎的知識點微服務架構Spring Boot
- Spring Boot 2.x基礎教程:Swagger靜態文件的生成Spring BootSwagger
- 音視訊技術基礎
- JavaGUI——繪圖技術基礎JavaGUI繪圖
- Docker 技術基礎之 CGroupsDocker
- 從零搭建Spring Boot的Hello WorldSpring Boot
- Spring Boot基礎面試題2020大集合Spring Boot面試題
- 前端技術演進(一):Web前端技術基礎前端Web
- Spring Boot 2.x基礎教程:Spring Data JPA的多資料來源配置Spring Boot
- 基於Base64編/解碼演算法的Spring Boot檔案上傳技術解析演算法Spring Boot
- 2018最新區塊鏈技術,從入門到精通視訊教程(比特幣基礎技術)區塊鏈比特幣
- 全面解析騰訊雲輕量伺服器:從基礎操作到高階應用的實踐指南伺服器
- Lynx技術分析-JS引擎擴充套件技術基礎JS套件