Java學習---Spring及其衍生(下)

? ? ? ? 接下來就到了Spring的另外2個知名的衍生框架,SpringBoot和SpringCloud。其中,SpringBoot 是由 Pivotal 團隊開發的一個基于 Spring 的框架,它的設計目的是簡化 Spring 應用程序的初始搭建和開發過程。SpringBoot 遵循 “約定優于配置” 的原則,減少了大量的 XML 配置和繁瑣的依賴管理。?

????????SpringBoot 的核心原理主要包括自動配置、起步依賴和嵌入式服務器。其主要的內容如下:

(1)自動配置:SpringBoot 通過 @EnableAutoConfiguration 注解開啟自動配置功能。在啟動時,SpringBoot 會掃描類路徑下的 META-INF/spring.factories 文件,該文件中定義了各種自動配置類。自動配置類會根據類路徑下是否存在特定的類來決定是否進行相應的配置,從而實現了自動配置的功能。?

(2)起步依賴:起步依賴是一組預定義的依賴集合,它將常用的依賴打包在一起,開發者只需要引入相應的起步依賴,就可以獲得該功能所需的所有依賴,無需手動添加每個依賴,簡化了依賴管理。?

(3)嵌入式服務器:SpringBoot 內置了 Tomcat、Jetty、Undertow 等嵌入式服務器,開發者無需單獨部署服務器,只需要將應用程序打包成 JAR 文件,就可以直接運行,方便了應用程序的部署和運行。?

? ? ? ? 這些核心的作用主要為:?

(1)簡化配置:采用 “約定優于配置” 的原則,大大減少了配置文件的數量和復雜度,讓開發者可以專注于業務邏輯的開發。?

(2)簡化依賴管理:通過起步依賴,簡化了項目的依賴管理,避免了因依賴版本沖突而導致的問題。?

(3)內置服務器:方便應用程序的部署和運行,無需額外安裝和配置服務器。?

(4)提供生產就緒功能:如健康檢查、度量指標、外部化配置等,方便應用程序在生產環境中的監控和管理。?

? ? ? ? 作為Spring的衍生,SpringBoot自然也有不少的優點,例如“:

(1)快速開發:簡化了 Spring 應用程序的搭建和開發過程,提高了開發效率。?

(2)減少配置:大量的自動配置減少了手動配置的工作量,降低了配置錯誤的風險。?

(3)易于部署:內置服務器使得應用程序可以直接打包成 JAR 文件運行,方便部署。?

(4)良好的兼容性:與 Spring 框架無縫集成,并且支持各種主流的技術和框架。?

? ? ? ? 同時,SpringBoot也有不少的缺點:?

(1)對于簡單應用可能過于重量級:如果只是開發一個非常簡單的 Web 應用,使用 SpringBoot 可能會引入一些不必要的依賴,增加應用程序的體積。?

(2)自動配置的黑箱性:雖然自動配置簡化了配置過程,但當出現配置問題時,排查問題可能比較困難,需要對 SpringBoot 的自動配置原理有深入的了解。?

????????SpringCloud 是一系列框架的有序集合,它是基于 SpringBoot,為微服務架構提供了完整的解決方案,包括服務注冊與發現、服務熔斷與降級、服務網關、配置中心、負載均衡等功能。?

????????SpringCloud 各個組件之間相互協作,共同實現微服務架構的功能。以下是幾個核心組件的工作原理:?

(1)服務注冊與發現:服務提供者在啟動時會向注冊中心注冊自己的服務信息(如服務名稱、IP 地址、端口號等);服務消費者在啟動時會從注冊中心獲取服務提供者的服務信息,并緩存到本地。當服務消費者需要調用服務提供者時,會根據本地緩存的服務信息選擇合適的服務提供者進行調用。同時,服務提供者會定期向注冊中心發送心跳信息,以證明自己的存活狀態,如果注冊中心在一定時間內沒有收到服務提供者的心跳信息,就會將該服務提供者從注冊中心中移除。?

(2)負載均衡:當服務消費者需要調用服務提供者時,負載均衡組件會根據一定的負載均衡策略(如輪詢、隨機、權重等)從多個服務提供者中選擇一個進行調用,以實現負載均衡,提高系統的可用性和性能。?

(3)服務熔斷與降級:當服務提供者出現故障或響應時間過長時,服務熔斷組件會快速失敗,避免服務消費者一直等待,從而防止故障的蔓延。服務降級是指當系統負載過高時,為了保證核心功能的正常運行,會將一些非核心功能的服務降級,如返回默認值、提示信息等。?

(4)服務網關:服務網關是微服務架構的入口,所有的外部請求都會經過服務網關。服務網關可以實現路由轉發、負載均衡、權限控制、限流、熔斷等功能,為微服務架構提供了統一的入口和管理。?

? ? ? ? 這些原理的作用主要為:?

(1)實現微服務架構:提供了構建微服務架構所需的各種組件和功能,幫助開發者快速搭建和部署微服務應用程序。?

(2)提高系統的可用性和可靠性:通過服務注冊與發現、負載均衡、服務熔斷與降級等功能,提高了系統的可用性和可靠性,減少了因單個服務故障而導致整個系統崩潰的風險。?

(3)簡化微服務管理:提供了統一的服務管理方式,方便對微服務進行監控、配置、追蹤等管理操作。?

(4)支持分布式系統:提供了分布式配置中心、分布式追蹤等功能,支持分布式系統的開發和運行。?

? ? ? ? 作為Spring衍生的衍生,SpringCloud自然也有許多的優點:

(1)完整的微服務解決方案:提供了構建微服務架構所需的各種組件和功能,滿足了微服務架構的各種需求。?

(2)基于 SpringBoot:與 SpringBoot 無縫集成,開發者可以充分利用 SpringBoot 的優勢,如快速開發、簡化配置等。?

(3)靈活性高:各個組件可以根據實際需求進行選擇和組合,滿足不同場景的需求。?

(4)社區活躍:擁有龐大的社區支持,不斷有新的功能和組件被開發出來,并且有豐富的文檔和教程可供參考。?

? ? ? ? 而相較于Spring,其學習成本高:SpringCloud 包含的組件較多,每個組件都有其獨特的工作原理和使用方法,初學者需要花費大量的時間和精力才能掌握。?同樣的,其復雜度也高:微服務架構本身就比較復雜,再加上 SpringCloud 的各種組件,增加了系統的復雜度,提高了系統的設計、開發、測試和維護難度。?且其部署和運維復雜:由于微服務架構包含多個服務,每個服務都需要獨立部署和運維,增加了部署和運維的工作量和復雜度。?

?????????Spring 與 SpringBoot相比,Spring 只是一個基礎框架,提供了核心的 IoC 和 AOP 功能;而SpringBoot 是基于 Spring 的框架,它簡化了 Spring 應用程序的搭建和開發過程,通過自動配置和起步依賴減少了配置工作,內置了服務器,方便部署。?

? ? ? ? 而SpringBoot 與 SpringCloud相比,SpringCloud 是基于 SpringBoot 的微服務框架,它提供了構建微服務架構所需的各種組件和功能,用于實現多個微服務之間的協作和管理。SpringCloud 依賴于 SpringBoot,它將多個 SpringBoot 應用程序整合起來,形成一個完整的微服務系統。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90629.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

殘月頭像閣

殘月頭像閣 使用說明: 直接上傳服務器即可## 項目簡介殘月頭像閣是一個簡潔美觀的頭像網站開源程序 支持快速部署與自定義采用擬態(Neumorphism)設計風格,提供多種分類的頭像## 功能特性- 🖼? 多分類頭像展示(男生、女生、卡通、情侶、動漫&…

文獻綜述AI生成免費工具推薦:高效整理文獻

做學術研究時,文獻綜述無疑是讓很多學子和科研工作者頭疼的環節。查閱、篩選、梳理大量文獻,然后進行歸納總結,最終形成一篇條理清晰的文獻綜述,這一整個過程常常耗費數日甚至數周。而面對課業壓力與緊迫的論文截止時間&#xff0…

OpenCV —— contours_matrix_()_[]

😶?🌫?😶?🌫?😶?🌫?😶?🌫?Take your time ! 😶?🌫?😶?🌫?😶?🌫?😶?🌫?…

android 小bug :文件沖突的問題

文章目錄前言1、問題:兩個文件沖突了2、原因:3、結果:后語前言 一個身份證模塊識別的小bug,記錄一下,這應該是第三次出現,每次出現都不太記得,還是得記錄,不然都是重復檢索的過程。…

Java學習第七十三部分——Redis

目錄 一、前言提要 二、核心特性 三、數據結構 四、應用場景 五、架構模式 六、性能優勢 七、客戶端庫 八、注意事項 九、選擇建議 十、使用示例——基于Jedis 和 Lettuce 十一、生態集成——基于Spring Boot 十二、企業級能力 十三、持久化機制 十四、高…

(LeetCode 每日一題) 3487. 刪除后的最大子數組元素和 (哈希表)

題目:3487. 刪除后的最大子數組元素和 思路:哈希表,時間復雜度0(n)。 維護數組nums的最大值mx,同時用哈希表mp維護數組中非負數出現的情況,記錄非負數的和sum。如果哈希表mp的大小為0,那么數組nums都是負數…

C 語言輸入輸出 (I/O)

C 語言輸出在C語言編程中&#xff0c;printf()是主要的輸出函數之一。該函數將格式化的輸出發送到屏幕。例如&#xff0c;示例1&#xff1a;C 語言輸出#include <stdio.h>int main (int argc, char* argv) {printf("Hello world\n");return 0; }輸出結果C Prog…

分布式系統中的緩存設計與應用

引言 緩存是分布式系統中的重要組件&#xff0c;主要解決高并發&#xff0c;大數據場景下&#xff0c;熱點數據訪問的性能問題。提供高性能的數據快速訪問。 本文是緩存在分布式應用第一篇文章&#xff0c;介紹緩存的原理&#xff0c;緩存的分類&#xff0c;緩存的設計&#xf…

智能機器人的技術革命:從感知到決策的全棧架構解析

——基于多模態大模型的下一代機器人系統設計引言&#xff1a;機器人技術的范式遷移當波士頓動力的Atlas完成后空翻時&#xff0c;全球見證了機器人運動控制的巔峰&#xff1b;但當Figure 01通過大模型理解人類模糊指令并自主執行任務時&#xff0c;我們正見證機器人認知智能的…

day20 雙向鏈表

雙向鏈表的函數功能注意事項 1.雙向鏈表還需要關注到前指針的指向2.函數都需要判斷邏輯3.函數的增刪都要關注到len的變化4.函數的改查功能都需要遍歷結束的標志NULL5.注意p->next->prio時&#xff0c;p->next是否指向NULL創建雙向鏈表頭節點Node_ptr list_create()函數…

[Rust 基礎課程]猜數字游戲-獲取用戶輸入并打印

創建項目 按照之前的章節講的創建一個 Cargo 項目的方法&#xff0c;自己創建一個名為 guessing_game 的 cargo 項目并執行&#xff0c;確保能成功打印出 Hello World。 編寫代碼 使用 RustRover 打開項目&#xff0c;打開 src/main.rs 文件&#xff0c;我們將在這個文件中編寫…

重讀《人件》Peopleware -(22)Ⅲ 適當人選 Ⅵ 樂在其中(上)

本章以一個小測驗開始&#xff1a;問題1&#xff1a;在過去幾年里&#xff0c;你們組織的年員工流失率是多少&#xff1f; 問題2&#xff1a;替換一個離職員工平均需要多少成本&#xff1f;評分標準如下&#xff1a;如果你對這兩個問題有任何答案&#xff0c;則通過&#xff1b…

Go、Node.js、Python、PHP、Java五種語言的直播推流RTMP協議技術實施方案和思路-優雅草卓伊凡

Go、Node.js、Python、PHP、Java五種語言的直播推流RTMP協議技術實施方案和思路-優雅草卓伊凡既然我們甲方要做直播私有化&#xff0c;既然我們做了這么多年系統&#xff0c;我們對直播的理解很深&#xff0c;那么我們2025年就應該用更先進的技術棧&#xff0c;不然怎么讓我們的…

SpringBoot 集成Mybatis Plus

一、為什么SpringBoot不推薦使用MybatisSpring Boot 不推薦使用 MyBatis&#xff0c;主要源于二者在設計理念、生態融合和開發風格上的差異。Spring Boot 強調“約定優于配置”&#xff0c;追求高效的開發體驗和統一的框架風格。它通過自動配置和依賴注入&#xff0c;將復雜的基…

PI 思維升級 PI設計的典范轉移:從阻抗思維到諧振控制

們先來回想一件事&#xff0c;根據歐姆定律&#xff0c;阻抗是不是越低越好&#xff1f; 代表即使有很大的瞬時電流&#xff0c;瞬間的電壓降也不會超過某個極限&#xff01;理論上是&#xff01; 可是這其實忽略了兩個關鍵的要素&#xff1a;PDN阻抗有諧振&#xff1a;諧振代表…

如何制定企業級服務器安全策略(Security Policy)

制定一套**企業級服務器安全策略&#xff08;Security Policy&#xff09;**對于保護服務器資源、數據安全和業務連續性至關重要。以下是制定安全策略的詳細指南&#xff0c;包括安全策略的核心要素、實施步驟和具體措施&#xff0c;幫助企業構建全面的服務器安全防護體系。1. …

n1 armbian docker compose 部署aipan mysql

apt update apt install docker-compose-plugin -y #安裝docker compose docker compose version Docker Compose version v2.38.2 sudo mkdir -p /sda1/data/mysql/conf.d sudo chown -R 999:999 /sda1/data/mysql # MySQL 用戶 UID 通常為 999 cat docker-compose.yml vers…

RAG情境化分段向量模型voyage-context-3,聚焦分段細節,融入全局文檔上下文

最近看到一個有意思的工作&#xff0c;原文來自&#xff1a; https://blog.voyageai.com/2025/07/23/voyage-context-3/?utm_sourceTWITTER&utm_mediumORGANIC_SOCIAL voyage-context-3&#xff1a;聚焦分段細節&#xff0c;融入全局文檔上下文 概要&#xff1a; Voyage A…

計算機體系結構中的中斷服務程序ISR是什么?

計算機體系結構中的中斷服務程序ISR是什么&#xff1f; 在計算機體系結構中&#xff0c;中斷服務程序&#xff08;Interrupt Service Routine, ISR&#xff09; 是操作系統或硬件直接調用的關鍵代碼模塊&#xff0c;用于響應來自硬件設備、軟件異常或系統事件的中斷信號。其核心…