溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

發(fā)布時(shí)間:2022-08-13 15:36:57 來源:億速云 閱讀:147 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決”吧!

    SpringBoot概述

    SpringBoot 是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化Spring應(yīng)用的初始搭建以及開發(fā)過程。

    大家已經(jīng)感受了 SpringBoot 程序,回過頭看看 SpringBoot 主要作用是什么,就是簡化 Spring 的搭建過程和開發(fā)過程。

    原始 Spring 環(huán)境搭建和開發(fā)存在以下問題:

    • 配置繁瑣依賴

    • 設(shè)置繁瑣

    SpringBoot 程序優(yōu)點(diǎn)恰巧就是針對(duì) Spring 的缺點(diǎn)

    • 自動(dòng)配置。這個(gè)是用來解決 Spring 程序配置繁瑣的問題

    • 起步依賴。這個(gè)是用來解決 Spring 程序依賴設(shè)置繁瑣的問題

    • 輔助功能(內(nèi)置服務(wù)器,…)。我們?cè)趩?dòng) SpringBoot 程序時(shí)既沒有使用本地的 tomcat 也沒有使用 tomcat 插件,而是使用 SpringBoot 內(nèi)置的服務(wù)器。

    接下來我們來說一下 SpringBoot 的起步依賴

    起步依賴

    我們使用 Spring Initializr 方式創(chuàng)建的 Maven 工程的的 pom.xml 配置文件中自動(dòng)生成了很多包含 starter 的依賴,如下圖

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    這些依賴就是啟動(dòng)依賴,接下來我們探究一下他是如何實(shí)現(xiàn)的。

    探索父工程

    從上面的文件中可以看到指定了一個(gè)父工程,我們進(jìn)入到父工程,發(fā)現(xiàn)父工程中又指定了一個(gè)父工程,如下圖所示

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    再進(jìn)入到該父工程中,在該工程中我們可以看到配置內(nèi)容結(jié)構(gòu)如下圖所示

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    上圖中的 properties 標(biāo)簽中定義了各個(gè)技術(shù)軟件依賴的版本,避免了我們?cè)谑褂貌煌浖夹g(shù)時(shí)考慮版本的兼容問題。在 properties 中我們找 servletmysql 的版本如下圖

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    dependencyManagement 標(biāo)簽是進(jìn)行依賴版本鎖定,但是并沒有導(dǎo)入對(duì)應(yīng)的依賴;如果我們工程需要那個(gè)依賴只需要引入依賴的 groupidartifactId 不需要定義 version。

    build 標(biāo)簽中也對(duì)插件的版本進(jìn)行了鎖定,如下圖

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    看完了父工程中 pom.xml 的配置后不難理解我們工程的的依賴為什么都沒有配置 version。

    探索依賴

    在我們創(chuàng)建的工程中的 pom.xml 中配置了如下依賴

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    進(jìn)入到該依賴,查看 pom.xml 的依賴會(huì)發(fā)現(xiàn)它引入了如下的依賴

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    里面的引入了 spring-webspring-webmvc 的依賴,這就是為什么我們的工程中沒有依賴這兩個(gè)包還能正常使用 springMVC 中的注解的原因。

    而依賴 spring-boot-starter-tomcat ,從名字基本能確認(rèn)內(nèi)部依賴了 tomcat,所以我們的工程才能正常啟動(dòng)。

    結(jié)論:以后需要使用技術(shù),只需要引入該技術(shù)對(duì)應(yīng)的起步依賴即可

    小結(jié)

    starter

    • SpringBoot 中常見項(xià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í)際開發(fā)

    使用任意坐標(biāo)時(shí),僅書寫GAV中的G和A,V由SpringBoot提供

    G:groupid

    A:artifactId

    V:version

    如發(fā)生坐標(biāo)錯(cuò)誤,再指定version(要小心版本沖突)

    程序啟動(dòng)

    創(chuàng)建的每一個(gè) SpringBoot 程序時(shí)都包含一個(gè)類似于下面的類,我們將這個(gè)類稱作引導(dǎo)類

    @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)類是項(xiàng)目的入口,運(yùn)行 main 方法就可以啟動(dòng)項(xiàng)目

    因?yàn)槲覀冊(cè)?pom.xml 中配置了 spring-boot-starter-web 依賴,而該依賴通過前面的學(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)類可以嗎?運(yùn)行一下試試,打印的日志信息如下

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    程序直接停止了,為什么呢?那是因?yàn)榕懦?tomcat 服務(wù)器,程序中就沒有服務(wù)器了。所以此時(shí)不光要排除 tomcat 服務(wù)器,還要引入 jetty 服務(wù)器。在 pom.xml 中因?yàn)?jetty 的起步依賴

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>

    接下來再次運(yùn)行引導(dǎo)類,在日志信息中就可以看到使用的是 jetty 服務(wù)器

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    小結(jié):
    通過切換服務(wù)器,我們不難發(fā)現(xiàn)在使用 SpringBoot 換技術(shù)時(shí)只需要導(dǎo)入該技術(shù)的起步依賴即可。

    spring與springboot的對(duì)比

    我們前文做完入門案例后,可以發(fā)現(xiàn)兩者有很大的不同:

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    坐標(biāo)

    • Spring 程序中的坐標(biāo)需要自己編寫,而且坐標(biāo)非常多

    • SpringBoot 程序中的坐標(biāo)是我們?cè)趧?chuàng)建工程時(shí)進(jìn)行勾選自動(dòng)生成的

    web3.0配置類

    • Spring 程序需要自己編寫這個(gè)配置類。這個(gè)配置類大家之前編寫過,肯定感覺很復(fù)雜

    • SpringBoot 程序不需要我們自己書寫

    配置類

    • Spring/SpringMVC 程序的配置類需要自己書寫。而 SpringBoot 程序則不需要書寫。

    注意:基于Idea的 Spring Initializr 快速構(gòu)建 SpringBoot 工程時(shí)需要聯(lián)網(wǎng)。

    官網(wǎng)構(gòu)建工程

    在入門案例中之所以能快速構(gòu)建 SpringBoot 工程,是因?yàn)?Idea 使用了官網(wǎng)提供了快速構(gòu)建 SpringBoot 工程的組件實(shí)現(xiàn)的。那如何在官網(wǎng)進(jìn)行工程構(gòu)建呢?通過如下步驟構(gòu)建

    進(jìn)入SpringBoot官網(wǎng)

    進(jìn)入到 SpringBoot 官網(wǎng)后拖到最下方就可以看到如下內(nèi)容

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    然后點(diǎn)擊 Spring Initializr 超鏈接就會(huì)跳轉(zhuǎn)到如下頁面

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    這個(gè)頁面內(nèi)容是不是感覺很眼熟的,這和我們使用 Idea 快速構(gòu)建 SpringBoot 工程的界面基本相同。在上面頁面輸入對(duì)應(yīng)的信息

    選擇依賴

    選擇 Spring Web 可以點(diǎn)擊上圖右上角的 ADD DEPENDENCIES... CTRL + B 按鈕,就會(huì)出現(xiàn)如下界面

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    生成工程

    以上步驟完成后就可以生成 SpringBoot 工程了。在頁面的最下方點(diǎn)擊 GENERATE CTRL + 回車 按鈕生成工程并下載到本地,如下圖所示

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    打開下載好的壓縮包可以看到工程結(jié)構(gòu)和使用 Idea 生成的一模一樣,如下圖

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    而打開 pom.xml 文件,里面也包含了父工程和 Spring Web 的依賴。

    通過上面官網(wǎng)的操作,我們知道 Idea 中快速構(gòu)建 SpringBoot 工程其實(shí)就是使用的官網(wǎng)的快速構(gòu)建組件,那以后即使沒有 Idea 也可以使用官網(wǎng)的方式構(gòu)建 SpringBoot 工程。

    SpringBoot工程快速啟動(dòng)

    問題引入

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    以后我們和前端開發(fā)人員協(xié)同開發(fā),而前端開發(fā)人員需要測試前端程序就需要后端開啟服務(wù)器,這就受制于后端開發(fā)人員。為了擺脫這個(gè)受制,前端開發(fā)人員嘗試著在自己電腦上安裝 TomcatIdea ,在自己電腦上啟動(dòng)后端程序,這顯然不現(xiàn)實(shí)。

    我們后端可以將 SpringBoot 工程打成 jar 包,該 jar 包運(yùn)行不依賴于 TomcatIdea 這些工具也可以正常運(yùn)行,只是這個(gè) jar 包在運(yùn)行過程中連接和我們自己程序相同的 Mysql 數(shù)據(jù)庫即可。這樣就可以解決這個(gè)問題,如下圖

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    那現(xiàn)在問題是如何打包呢?

    打包

    由于我們?cè)跇?gòu)建 SpringBoot 工程時(shí)已經(jīng)在 pom.xml 中配置了如下插件

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>

    所以我們只需要使用 Mavenpackage 指令打包就會(huì)在 target 目錄下生成對(duì)應(yīng)的 Jar 包。

    注意:該插件必須配置,不然打好的 jar 包也是有問題的。

    啟動(dòng)

    進(jìn)入 jar 包所在位置,在 命令提示符 中輸入如下命令

    java -jar 包名.jar

    執(zhí)行上述命令就可以看到 SpringBoot 運(yùn)行的日志信息

    SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決

    感謝各位的閱讀,以上就是“SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)SpringBoot官網(wǎng)構(gòu)建、快速啟動(dòng)的問題怎么解決這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI