主頁 > 後端開發 > 為什么要用Spring Boot?

為什么要用Spring Boot?

2021-03-07 06:10:11 後端開發

什么是Spring Boot?

??Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發程序,該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置, Spring Boot默認配置了很多框架的使用方式,就像 Maven整合了所有的Jar包,Spring Boot整合了所有的框架,它的核心設計思想是∶約定優于配置,Spring Boot所有開發細節都是依據此思想進行實作的,

什么是約定優于配置?

??約定優于配置(Convention Over Configuration),也稱作按約定編程,是一種軟體設計范式,旨在減少軟體開發人員需做決定的數量、獲得簡單的好處,而又不失靈活性,

??本質是說,開發人員僅需規定應用中不符約定的部分,例如,如果模型中有個名為 User 的類,那么資料庫中對應的表就會默認命名為 user,只有在偏離這一約定時,例如將該表命名為"user info",才需寫有關這個名字的配置,我們可以按照這個思路來設想,我們約定 Controller 層就是 Web 請求層可以省略 MVC的配置;我們約定在 Service 結尾的類自動注入事務,就可以省略了 Spring 的切面事務配置,在 Spring 體系中,Spring Boot JPA就是約定優于配置最佳實作之一,不需要關注表結構,我們約定類名即是表名,屬性名即是表的欄位,String 對應varchar,long 對應 bigint,只有需要一些特殊要求的屬性,我們再單獨進行配置,按照這個約定我們可以將以前的作業大大簡化,

??Spring Boot 體系將約定優于配置的思想展現得淋漓盡致,小到組態檔、中間件的默認配置,大到內置容器、生態中的各種 Starters無不遵循此設計規則,Spring Boot 鼓勵各軟體組織方創建自己的Starter,創建 Starter 的核心組件之一就是 autoconfigure模塊,也是 Starter 的核心功能,在啟動的時候進行自動裝配,屬性默認化配置,可以說正是因為 Spring Boot 簡化的配置和眾多的 Starters 才讓 Spring Boot 變得簡單、易用、快速上手,也可以說正是約定優于配置的思想徹底落地才讓 Spring Boot 走向輝煌,Spring Boot 約定優于配置的思想讓 Spring Boot 專案非常容易上手,讓編程變得更簡單,其實編程本該很簡單,簡單才是編程的美,

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 是一套全新的框架,它來自于 Spring大家族,因此 Spring 所有具備的功能它都有并且更容易使用;同時還簡化了基于 Sp ring 的應用開發,通過少量的代碼就能創建一個獨立的、產品級別的 Spring 應用,

Spring Boot 有哪些特性?

  1. 使用 Spring 專案引導頁面可以在幾秒構建一個專案;
  2. 方便對外輸出各種形式的服務,如 REST API、WebSocket、Web、Streaming、Tasks;
  3. 非常簡潔的安全策略集成;
  4. 支持關系資料庫和非關系資料庫;
  5. 支持運行期內嵌容器,如 Tomcat、Jetty;
  6. 強大的開發包,支持熱啟動;
  7. 自動管理依賴;
  8. 自帶應用監控;
  9. 支持各種 IDE,如 IntelliJ IDEA、NetBeans,

為什么學習 Spring Boot ?

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

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

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

??從軟體發展的角度來講,越簡單的開發模式越流行,簡單的開發模式解放出更多生產力,讓開發人員可以避免將精力耗費在各種配置、語法所設定的門檻上,從而更專注于業務,這點上,Spring Boot已盡可能地簡化了應用開發的門檻,Spring Boot 所集成的技術堆疊,涵蓋了各大互聯網公司的主流技術,跟著 Spring Boot 的路線去學習,基本可以了解國內外互聯網公司的技術特點,

Spring、Spring Boot 和 Spring Cloud有什么關系?

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

??Spring Boot是在強大的 Spring 帝國生態基礎上面發展而來,發明Spring Boot不是為了取代 Spring,是為了讓人們更容易的使用 Spring,所以說沒有 Spring強大的功能和生態,就不會有后期 Spring Boot 的火熱,Spring Boot使用約定優于配置的理念,重新重構了Spring 的使用,讓 Spring 后續的發展更有生命力,Spring Boot并沒有重復制造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過 Spring Boot風格進行再封裝并屏蔽掉復雜的配置和實作原理,最終給開發者提供了一套簡單易懂、易部署、易維護的分布式系統開發工具包,

??Spring Cloud是一系列框架的有序集合,它利用 Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,服務發現注冊、配置中心、訊息總線、負載均衡、斷路器、資料監控等,都可以用 Spring Boot 的開發風格做到一鍵啟動和部署,Spring Cloud是為了解決微服務架構中服務治理而提供的具備一系列功能的開發框架,并且 Spring Cloud是完全基于Spring Boot 而開發,Spring Cloud利用 Spring Boot特性整合了開源行業中優秀的組件,整體對外提供了一套在微服務架構中服務治理的解決方案,

??綜上我們可以這樣來理解,正是由于 Spring loC和 Spring Aop 兩個強大的功能才有了Spring,Spring生態不斷的發展才有了Spring Boot,使用 Spring Boot讓Spring 更易用更有生命力,Spring Cloud是基于 Spring Boot 開發的一套微服務架構下的服務治理方案,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266893.html

標籤:Java

上一篇:監控、鏈路追蹤、日志的區別,傻傻分不清?

下一篇:表格邏輯的幾個想法

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more