?哈嘍,哈嘍,大家好~ 我是你們的老朋友:保護(hù)小周???
今天給大家?guī)淼氖?SpringBoot 的簡介,SpringBoot 項(xiàng)目的創(chuàng)建,相較于 Spring 框架的優(yōu)點(diǎn): 1. 快速的集成框架? 2.內(nèi)置運(yùn)行容器, 快速的部署項(xiàng)目?3. 摒棄繁瑣的 xml,使用注解和配置的方式進(jìn)行開發(fā)。4. 支持更多的監(jiān)控的指標(biāo),本文將為大家講解,一起來看看叭~
本期收錄于博主的專欄:JavaEE_保護(hù)小周?的博客-CSDN博客
適用于編程初學(xué)者,感興趣的朋友們可以訂閱,查看其它 “JavaEE基礎(chǔ)知識”。
更多精彩敬請期待:保護(hù)小周? *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘
一、SpringBoot 簡介
SpringBoot 的由來可以追溯到 Spring 框架。Spring 是一個(gè)非常流行的開源 Java 框架,用于構(gòu)建企業(yè)級應(yīng)用程序。然而,使用 Spring 框架開發(fā)傳統(tǒng)的 Java 應(yīng)用程序需要進(jìn)行繁瑣的配置,并且部署也需要額外的手動(dòng)操作。
為了簡化 Spring 應(yīng)用程序的開發(fā)和部署過程,SpringBoot 在2013年由 Pivotal 團(tuán)隊(duì)推出(與Spring 并不是同一團(tuán)隊(duì))。它的目標(biāo)是通過提供一系列的自動(dòng)配置、快速啟動(dòng)、內(nèi)嵌服務(wù)器和起步依賴項(xiàng)等功能,使得開發(fā)者可以更輕松地創(chuàng)建和部署 Spring 應(yīng)用程序。
SpringBoot 的設(shè)計(jì)理念是 “約定大于配置” 的方式來提高開發(fā)效率。它采用了一套預(yù)定義的規(guī)則和約定,根據(jù)項(xiàng)目的依賴和類路徑進(jìn)行自動(dòng)配置,大部分情況下無需手動(dòng)配置。開發(fā)者只需要關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn)而不必浪費(fèi)時(shí)間在繁瑣的配置上。
Spring 的誕生是為了簡化 Java 應(yīng)用程序的開發(fā),而?SpringBoot 的誕生是為了簡化 Spring 程序的開發(fā),SpringBoot 是為了快速的開發(fā) Spring 框架而誕生的。
例如:Spring 割稻谷
SpringBoot 割稻谷
也是很鮮明的對比,技術(shù)的更新迭代嘛,新的技術(shù)相較于之前的技術(shù)在效率方面肯定有一些提升。
二、SpringBoot 的優(yōu)點(diǎn)
優(yōu)點(diǎn)建立在Spring 框架的基礎(chǔ)之上~
2.1 快速的集成框架:
我們想要?jiǎng)?chuàng)建 Spring 項(xiàng)目,最常用的一個(gè)做法是先創(chuàng)建一個(gè)Maven 項(xiàng)目,然后從 Maven 中央倉庫中獲取 Spring 的依賴(Spring 屬于第三方開源框架),注入到 pom.xml 配置文件中。
將一些都做好了之后,我們可能還需添加一些其他第三方依賴,例如:JDBC (數(shù)據(jù)庫),一些工具依賴 lombok 等等,不知道細(xì)心的朋友發(fā)現(xiàn)了沒,我們添加的各種依賴都有一個(gè)版本號,如果這些第三方依賴彼此之間版本不兼容,如果我們使用了這些依賴,可能會導(dǎo)致程序無法啟動(dòng),或者是一些功能的癱瘓。
所以創(chuàng)建Spring 項(xiàng)目,我們需要添加相關(guān)依賴,需要注意依賴的版本之間是否兼容?。?!
?2.1.1 SpringBoot 的創(chuàng)建
如果我們使用的 IDEA 的社區(qū)版,要先安裝Spring Boot Helper 插件(這個(gè)插件在社區(qū)版 2022 之前才免費(fèi),之后的版本需要收費(fèi)的)才能創(chuàng)建? SpringBoot 項(xiàng)目。
?安裝好之后,它的名字就變成了 Spring Initializr and Assistant:
?
?然后我們使用 IDEA 創(chuàng)建項(xiàng)目的時(shí)候就可以使用該插件創(chuàng)建~
注意選擇你本機(jī)上安裝的 JDK 的版本
點(diǎn)擊next 后:
?點(diǎn)擊 Finish 就完成 Spring Boot 的項(xiàng)目創(chuàng)建了.
我們也可以不使用 IDEA 創(chuàng)建SpringBoot 項(xiàng)目,使用 Spring官網(wǎng)提供的網(wǎng)頁版本來創(chuàng)建 SpringBoot項(xiàng)目,或者?阿里提供的網(wǎng)頁版創(chuàng)建項(xiàng)目
網(wǎng)頁版創(chuàng)建路徑:https://start.spring.io
網(wǎng)頁版創(chuàng)建好項(xiàng)目后,會得到一個(gè) SpringBoot 的zip 壓縮包,解壓后使用 Idea 打開后也可以直接使用項(xiàng)目,注意網(wǎng)頁創(chuàng)建項(xiàng)目的時(shí)候需要選擇的JDK適配 與本機(jī)的JDK 版本適配。
我們使用 IDEA 創(chuàng)建一個(gè) SpringBoot 項(xiàng)目感覺過程非常的繁瑣,但這些流程全部都是必要的,沒有一絲的拖泥帶水,最最最關(guān)鍵的是SpringBoot 可以幫我們根據(jù) SpringBoot 的版本去適配其他的第三方框架(依賴)的版本。這是他的優(yōu)點(diǎn),可以快速的集成框架。
2.2 內(nèi)置運(yùn)行容器, 快速的部署項(xiàng)目
SpringBoot內(nèi)置了多種容器,可以根據(jù)需要選擇合適的容器。以下是Spring Boot內(nèi)置的容器:
-
Tomcat(默認(rèn)):Spring Boot默認(rèn)使用的容器是Apache Tomcat。Tomcat是一個(gè)輕量級的Java Web(HTTP)服務(wù)器,以及一個(gè)Servlet容器。Spring Boot會自動(dòng)配置Tomcat作為默認(rèn)的內(nèi)置容器。
-
Jetty:Spring Boot也支持使用Jetty作為內(nèi)置容器。Jetty是另一個(gè)流行的Java Web服務(wù)器和Servlet容器??梢酝ㄟ^在pom.xml文件中添加jetty依賴來切換至Jetty容器。
-
Undertow:另一個(gè)可選的內(nèi)置容器是Undertow。Undertow是一個(gè)輕量級的高性能Web服務(wù)器,由JBoss開發(fā)??梢酝ㄟ^在pom.xml文件中添加undertow依賴來切換至Undertow容器。
可以通過在Spring Boot的配置文件(application.properties或application.yml)中設(shè)置相關(guān)屬性來配置使用的內(nèi)置容器。例如,可以設(shè)置server.port屬性來指定監(jiān)聽的端口號。
需要注意的是,SpringBoot也支持通過外部容器部署應(yīng)用程序,例如使用獨(dú)立的Tomcat或Jetty服務(wù)器來承載應(yīng)用程序。這樣做可以提供更靈活的部署和擴(kuò)展選項(xiàng)。
Java在運(yùn)行部署這一塊Tomcat 使用的是最多的,他是用Java代碼寫的?HTTP 協(xié)議的服務(wù)器,JavaWeb 這一塊是靠這些內(nèi)置容器提供 API 對HTTP 協(xié)議數(shù)據(jù)報(bào)進(jìn)行處理。
像Servlet 項(xiàng)目就需要我們手動(dòng)去配置一個(gè)外置的 Tomcat 然后將項(xiàng)目打包部署到容器中。在項(xiàng)目部署的時(shí)候我們同樣也需要安裝一個(gè) Tomcat 到服務(wù)器上,而 SpringBoot 項(xiàng)目內(nèi)部集成了 Tomcat ,所以我們就可以做到快速的部署項(xiàng)目,無需外部容器即可啟動(dòng)。
2.3 摒棄繁瑣的 xml,使用注解和配置的方式進(jìn)行開發(fā)。
Spring 在啟動(dòng)時(shí)需要根據(jù) Spring配置文件(.xml)中配置的包路徑掃描包中的那些類被注解注釋了,然后將這些被注釋的類實(shí)例(Bean對象)到 Spring 容器中。
而SpringBoot 項(xiàng)目,當(dāng)我們把要注?到容器類和啟動(dòng)類放到同級目錄下時(shí):
這個(gè)時(shí)候當(dāng)項(xiàng)目啟動(dòng)時(shí)才能掃描注解修飾的類,將Bean 對象注入到容器中。
對比 Spring 項(xiàng)目我們就可以直觀的看到區(qū)別,Spring 中需要配置 Bean 對象的包掃描路徑,而SpringBoot 不用(約定大于配置)。我們在做大項(xiàng)目的時(shí)候,目錄是有很多的,如果都是用 xml 文件配置路徑,是非常繁瑣的操作。
SpringBoot 還有一個(gè)優(yōu)點(diǎn)就是有配置文件,自動(dòng)裝配,這個(gè)跟Spring 自動(dòng)裝配不是一個(gè)概念,Boot 項(xiàng)目啟動(dòng)時(shí),可以從配置文件中讀取類實(shí)例所需的第三方數(shù)據(jù)??!
舉個(gè)例子,創(chuàng)建Mysql 數(shù)據(jù)庫對象—— datasource
常規(guī)的做法是我們手動(dòng)配置數(shù)據(jù)源:
這意味著寫死了,因?yàn)槲覀儗㈨?xiàng)目打包部署,生成的是字節(jié)碼文件(.class 二進(jìn)制),如果我們實(shí)際的運(yùn)行環(huán)境跟我們項(xiàng)目中的數(shù)據(jù)不適配,本地調(diào)試的數(shù)據(jù)庫跟服務(wù)器上的數(shù)據(jù)庫那是兩個(gè)不同的。用戶名,密碼,不一定一樣(本地能跑,服務(wù)器上跑不了,需要調(diào)試),或者因?yàn)榉?wù)器上的某些數(shù)據(jù)要被修改(賬戶,密碼),但是對于我們的字節(jié)碼文件來說,修改不了,程序自然就無法運(yùn)行,還得返工,讓開發(fā)人員重新調(diào)整然后打包部署,這個(gè)操作就非常的麻煩。
而SpringBoot 項(xiàng)目創(chuàng)建一個(gè)Mysql數(shù)據(jù)源就先從配置文件中讀取相關(guān)信息,然后幫我們生成一個(gè) Mysql 的數(shù)據(jù)源,這意味著,文件是可以隨時(shí)修改得,類在實(shí)例時(shí),所依賴的關(guān)鍵數(shù)據(jù)可以變化的。
包括端口號,本地默認(rèn)是 8080,成產(chǎn)環(huán)境的服務(wù)器 8080 端口可能被占用了,這種情況下我們也可在配置文件中修改應(yīng)用程序的端口號,這些都是 SpringBoot 項(xiàng)目的優(yōu)點(diǎn)。
當(dāng)然普通的項(xiàng)目中,我們也可以創(chuàng)建一個(gè)配置文件,利用 IO 流來讀取相關(guān)信息,說白了,增加了類的復(fù)雜度,程序猿的代碼需要框框?qū)?,奈?SpringBoot 是自帶的呢,而且配合注解使用就可以讀取啦。SpringBoot 配置文件是非常強(qiáng)大的嘞,詳細(xì)內(nèi)容請聽下回揭曉~
2.4? 支持更多的監(jiān)控的指標(biāo)
SpringBoot提供了一些內(nèi)置的監(jiān)控指標(biāo),可以通過集成的監(jiān)控工具或者自定義指標(biāo)來獲取更多信息。下面是一些SpringBoot支持的監(jiān)控指標(biāo)的示例:
-
健康指標(biāo)(Health Indicators):用于檢查應(yīng)用程序的健康狀況,包括內(nèi)存使用、數(shù)據(jù)庫連接狀態(tài)等。
-
內(nèi)存指標(biāo)(Memory Metrics):跟蹤應(yīng)用程序的內(nèi)存使用情況,包括堆內(nèi)存使用量、非堆內(nèi)存使用量等。
-
CPU指標(biāo)(CPU Metrics):監(jiān)控應(yīng)用程序在處理請求時(shí)的處理器使用率。
-
線程指標(biāo)(Thread Metrics):跟蹤應(yīng)用程序的線程池使用情況,以及活動(dòng)線程的數(shù)量等。
-
請求統(tǒng)計(jì)指標(biāo)(Request Metrics):監(jiān)控應(yīng)用程序的請求處理情況,如請求的數(shù)量、平均響應(yīng)時(shí)間等。
-
數(shù)據(jù)庫指標(biāo)(Database Metrics):用于跟蹤應(yīng)用程序與數(shù)據(jù)庫之間的交互情況,如查詢執(zhí)行時(shí)間、連接池使用情況等。
-
日志指標(biāo)(Log Metrics):跟蹤應(yīng)用程序的日志輸出情況,如日志級別、日志條目數(shù)量等。
-
緩存指標(biāo)(Cache Metrics):監(jiān)控應(yīng)用程序的緩存使用情況,如緩存命中率、緩存清除次數(shù)等。
這些指標(biāo)可以方便地通過Spring Actuator模塊來進(jìn)行監(jiān)控和暴露,也可以選擇使用自帶的監(jiān)控工具或者結(jié)合第三方監(jiān)控工具進(jìn)行監(jiān)控和分析。
以上我們最常用的是日志,項(xiàng)目在運(yùn)行的過程中遇到的那些問題,通常在日志中就可以體現(xiàn)出來,日志的內(nèi)容和級別是撒時(shí)候記錄可以由程序員自己決定。
?關(guān)于日志的相關(guān)操作我也會在后期的文章當(dāng)中給大家講述……
好了,到這里,【SpringBoot】簡介及傳統(tǒng)的 Spring 框架:對比和分析?博主已經(jīng)分享完了,希望對大家有所幫助,如有不妥之處歡迎批評指正。?
?
下期預(yù)告:【SpringBoot】日志、【SpringBoot】配置文件
感謝每一位觀看本篇文章的朋友,更多精彩敬請期待:保護(hù)小周? *★,°*:.☆( ̄▽ ̄)/$:*.°★*?文章來源:http://www.zghlxwxcb.cn/news/detail-607179.html
遇見你,所有的星星都落在我的頭上……?文章來源地址http://www.zghlxwxcb.cn/news/detail-607179.html
到了這里,關(guān)于【SpringBoot】簡介及傳統(tǒng)的 Spring 框架:對比和分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!