關(guān)于SpringBoot簡(jiǎn)介、官網(wǎng)構(gòu)建、快速啟動(dòng)的問(wèn)題
SpringBoot概述
SpringBoot
是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。
大家已經(jīng)感受了 SpringBoot
程序,回過(guò)頭看看 SpringBoot
主要作用是什么,就是簡(jiǎn)化 Spring
的搭建過(guò)程和開(kāi)發(fā)過(guò)程。
原始 Spring
環(huán)境搭建和開(kāi)發(fā)存在以下問(wèn)題:
- 配置繁瑣依賴
- 設(shè)置繁瑣
SpringBoot
程序優(yōu)點(diǎn)恰巧就是針對(duì) Spring
的缺點(diǎn)
- 自動(dòng)配置。這個(gè)是用來(lái)解決
Spring
程序配置繁瑣的問(wèn)題 - 起步依賴。這個(gè)是用來(lái)解決
Spring
程序依賴設(shè)置繁瑣的問(wèn)題 - 輔助功能(內(nèi)置服務(wù)器,…)。我們?cè)趩?dòng)
SpringBoot
程序時(shí)既沒(méi)有使用本地的tomcat
也沒(méi)有使用tomcat
插件,而是使用SpringBoot
內(nèi)置的服務(wù)器。
接下來(lái)我們來(lái)說(shuō)一下 SpringBoot
的起步依賴
起步依賴
我們使用 Spring Initializr
方式創(chuàng)建的 Maven
工程的的 pom.xml
配置文件中自動(dòng)生成了很多包含 starter
的依賴,如下圖
這些依賴就是啟動(dòng)依賴,接下來(lái)我們探究一下他是如何實(shí)現(xiàn)的。
探索父工程
從上面的文件中可以看到指定了一個(gè)父工程,我們進(jìn)入到父工程,發(fā)現(xiàn)父工程中又指定了一個(gè)父工程,如下圖所示
再進(jìn)入到該父工程中,在該工程中我們可以看到配置內(nèi)容結(jié)構(gòu)如下圖所示
上圖中的 properties
標(biāo)簽中定義了各個(gè)技術(shù)軟件依賴的版本,避免了我們?cè)谑褂貌煌浖夹g(shù)時(shí)考慮版本的兼容問(wèn)題。在 properties
中我們找 servlet
和 mysql
的版本如下圖
dependencyManagement
標(biāo)簽是進(jìn)行依賴版本鎖定,但是并沒(méi)有導(dǎo)入對(duì)應(yīng)的依賴;如果我們工程需要那個(gè)依賴只需要引入依賴的 groupid
和 artifactId
不需要定義 version
。
而 build
標(biāo)簽中也對(duì)插件的版本進(jìn)行了鎖定,如下圖
看完了父工程中 pom.xml
的配置后不難理解我們工程的的依賴為什么都沒(méi)有配置 version
。
探索依賴
在我們創(chuàng)建的工程中的 pom.xml
中配置了如下依賴
進(jìn)入到該依賴,查看 pom.xml
的依賴會(huì)發(fā)現(xiàn)它引入了如下的依賴
里面的引入了 spring-web
和 spring-webmvc
的依賴,這就是為什么我們的工程中沒(méi)有依賴這兩個(gè)包還能正常使用 springMVC
中的注解的原因。
而依賴 spring-boot-starter-tomcat
,從名字基本能確認(rèn)內(nèi)部依賴了 tomcat
,所以我們的工程才能正常啟動(dòng)。
結(jié)論:以后需要使用技術(shù),只需要引入該技術(shù)對(duì)應(yīng)的起步依賴即可
小結(jié)
starter
SpringBoot
中常見(jiàn)項(xiàng)目名稱(chēng),定義了當(dāng)前項(xiàng)目使用的所有項(xiàng)目坐標(biāo),以達(dá)到減少依賴配置的目的
parent
- 所有
SpringBoot
項(xiàng)目要繼承的項(xiàng)目,定義了若干個(gè)坐標(biāo)版本號(hào)(依賴管理,而非依賴),以達(dá)到減少依賴沖突的目的 spring-boot-starter-parent
(2.5.0)與spring-boot-starter-parent
(2.4.6)共計(jì)57處坐標(biāo)版本不同
實(shí)際開(kāi)發(fā)
使用任意坐標(biāo)時(shí),僅書(shū)寫(xiě)GAV中的G和A,V由SpringBoot提供
G:groupid
A:artifactId
V:version
如發(fā)生坐標(biāo)錯(cuò)誤,再指定version(要小心版本沖突)
程序啟動(dòng)
創(chuàng)建的每一個(gè) SpringBoot
程序時(shí)都包含一個(gè)類(lèi)似于下面的類(lèi),我們將這個(gè)類(lèi)稱(chēng)作引導(dǎo)類(lèi)
@SpringBootApplication public class Springboot01QuickstartApplication { public static void main(String[] args) { SpringApplication.run(Springboot01QuickstartApplication.class, args); } }
注意:
SpringBoot
在創(chuàng)建項(xiàng)目時(shí),采用jar的打包方式SpringBoot
的引導(dǎo)類(lèi)是項(xiàng)目的入口,運(yùn)行main
方法就可以啟動(dòng)項(xiàng)目
因?yàn)槲覀冊(cè)?pom.xml
中配置了 spring-boot-starter-web
依賴,而該依賴通過(guò)前面的學(xué)習(xí)知道它依賴 tomcat
,所以運(yùn)行 main
方法就可以使用 tomcat
啟動(dòng)咱們的工程。
切換web服務(wù)器
現(xiàn)在我們啟動(dòng)工程使用的是 tomcat
服務(wù)器,那能不能不使用 tomcat
而使用 jetty
服務(wù)器,jetty
在我們 maven
高級(jí)時(shí)講 maven
私服使用的服務(wù)器。而要切換 web
服務(wù)器就需要將默認(rèn)的 tomcat
服務(wù)器給排除掉,怎么排除呢?使用 exclusion
標(biāo)簽
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>spring-boot-starter-tomcat</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> </dependency>
現(xiàn)在我們運(yùn)行引導(dǎo)類(lèi)可以嗎?運(yùn)行一下試試,打印的日志信息如下
程序直接停止了,為什么呢?那是因?yàn)榕懦?tomcat
服務(wù)器,程序中就沒(méi)有服務(wù)器了。所以此時(shí)不光要排除 tomcat
服務(wù)器,還要引入 jetty
服務(wù)器。在 pom.xml
中因?yàn)?jetty
的起步依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>
接下來(lái)再次運(yùn)行引導(dǎo)類(lèi),在日志信息中就可以看到使用的是 jetty
服務(wù)器
小結(jié):
通過(guò)切換服務(wù)器,我們不難發(fā)現(xiàn)在使用SpringBoot
換技術(shù)時(shí)只需要導(dǎo)入該技術(shù)的起步依賴即可。
spring與springboot的對(duì)比
我們前文做完入門(mén)案例后,可以發(fā)現(xiàn)兩者有很大的不同:
坐標(biāo)
Spring
程序中的坐標(biāo)需要自己編寫(xiě),而且坐標(biāo)非常多SpringBoot
程序中的坐標(biāo)是我們?cè)趧?chuàng)建工程時(shí)進(jìn)行勾選自動(dòng)生成的
web3.0配置類(lèi)
Spring
程序需要自己編寫(xiě)這個(gè)配置類(lèi)。這個(gè)配置類(lèi)大家之前編寫(xiě)過(guò),肯定感覺(jué)很復(fù)雜SpringBoot
程序不需要我們自己書(shū)寫(xiě)
配置類(lèi)
Spring/SpringMVC
程序的配置類(lèi)需要自己書(shū)寫(xiě)。而SpringBoot
程序則不需要書(shū)寫(xiě)。
注意:基于Idea的
Spring Initializr
快速構(gòu)建SpringBoot
工程時(shí)需要聯(lián)網(wǎng)。
官網(wǎng)構(gòu)建工程
在入門(mén)案例中之所以能快速構(gòu)建 SpringBoot
工程,是因?yàn)?Idea
使用了官網(wǎng)提供了快速構(gòu)建 SpringBoot
工程的組件實(shí)現(xiàn)的。那如何在官網(wǎng)進(jìn)行工程構(gòu)建呢?通過(guò)如下步驟構(gòu)建
進(jìn)入SpringBoot官網(wǎng)
官網(wǎng)地址如下:
https://spring.io/projects/spring-boot
進(jìn)入到 SpringBoot
官網(wǎng)后拖到最下方就可以看到如下內(nèi)容
然后點(diǎn)擊 Spring Initializr
超鏈接就會(huì)跳轉(zhuǎn)到如下頁(yè)面
這個(gè)頁(yè)面內(nèi)容是不是感覺(jué)很眼熟的,這和我們使用 Idea
快速構(gòu)建 SpringBoot
工程的界面基本相同。在上面頁(yè)面輸入對(duì)應(yīng)的信息
選擇依賴
選擇 Spring Web
可以點(diǎn)擊上圖右上角的 ADD DEPENDENCIES... CTRL + B
按鈕,就會(huì)出現(xiàn)如下界面
生成工程
以上步驟完成后就可以生成 SpringBoot
工程了。在頁(yè)面的最下方點(diǎn)擊 GENERATE CTRL + 回車(chē)
按鈕生成工程并下載到本地,如下圖所示
打開(kāi)下載好的壓縮包可以看到工程結(jié)構(gòu)和使用 Idea
生成的一模一樣,如下圖
而打開(kāi) pom.xml
文件,里面也包含了父工程和 Spring Web
的依賴。
通過(guò)上面官網(wǎng)的操作,我們知道 Idea
中快速構(gòu)建 SpringBoot
工程其實(shí)就是使用的官網(wǎng)的快速構(gòu)建組件,那以后即使沒(méi)有 Idea
也可以使用官網(wǎng)的方式構(gòu)建 SpringBoot
工程。
SpringBoot工程快速啟動(dòng)
問(wèn)題引入
以后我們和前端開(kāi)發(fā)人員協(xié)同開(kāi)發(fā),而前端開(kāi)發(fā)人員需要測(cè)試前端程序就需要后端開(kāi)啟服務(wù)器,這就受制于后端開(kāi)發(fā)人員。為了擺脫這個(gè)受制,前端開(kāi)發(fā)人員嘗試著在自己電腦上安裝 Tomcat
和 Idea
,在自己電腦上啟動(dòng)后端程序,這顯然不現(xiàn)實(shí)。
我們后端可以將 SpringBoot
工程打成 jar
包,該 jar
包運(yùn)行不依賴于 Tomcat
和 Idea
這些工具也可以正常運(yùn)行,只是這個(gè) jar
包在運(yùn)行過(guò)程中連接和我們自己程序相同的 Mysql
數(shù)據(jù)庫(kù)即可。這樣就可以解決這個(gè)問(wèn)題,如下圖
那現(xiàn)在問(wèn)題是如何打包呢?
打包
由于我們?cè)跇?gòu)建 SpringBoot
工程時(shí)已經(jīng)在 pom.xml
中配置了如下插件
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
所以我們只需要使用 Maven
的 package
指令打包就會(huì)在 target
目錄下生成對(duì)應(yīng)的 Jar
包。
注意:該插件必須配置,不然打好的
jar
包也是有問(wèn)題的。
啟動(dòng)
進(jìn)入 jar
包所在位置,在 命令提示符
中輸入如下命令
java -jar 包名.jar
執(zhí)行上述命令就可以看到 SpringBoot
運(yùn)行的日志信息
到此這篇關(guān)于SpringBoot簡(jiǎn)介、官網(wǎng)構(gòu)建、快速啟動(dòng)的文章就介紹到這了,更多相關(guān)SpringBoot快速啟動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring boot整合jsp及設(shè)置啟動(dòng)頁(yè)面的方法
這篇文章主要給大家介紹了關(guān)于spring boot整合jsp及設(shè)置啟動(dòng)頁(yè)面的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09IntelliJ Idea常用11款插件(提高開(kāi)發(fā)效率)
這篇文章主要介紹了IntelliJ Idea常用11款插件(提高開(kāi)發(fā)效率),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Java面試官最喜歡問(wèn)的關(guān)鍵字之volatile詳解
這篇文章主要給大家介紹了關(guān)于Java面試官最喜歡問(wèn)的關(guān)鍵字之volatile的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03使用Spring boot + jQuery上傳文件(kotlin)功能實(shí)例詳解
本文通過(guò)實(shí)例代碼給大家介紹了使用Spring boot + jQuery上傳文件(kotlin) 功能,需要的朋友可以參考下2017-07-07SpringBoot框架RESTful接口設(shè)置跨域允許
這篇文章主要為大家詳細(xì)介紹了SpringBoot框架RESTful接口設(shè)置跨域允許,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08java并發(fā)編程StampedLock高性能讀寫(xiě)鎖詳解
這篇文章主要為大家介紹了java并發(fā)編程StampedLock高性能讀寫(xiě)鎖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05