目錄
SpringBoot概述
我們使用
從上面的檔案可以看到指定了一個父工程,我們進入到父工程,發現父工程中又指定了一個父工程,如下圖所示
pom.xml
程式啟動
切換web伺服器
spring與springboot的比較
注意:基於Idea的
生成工程
SpringBoot工程快速启动
问题引入
打包
启动
首頁 Java java教程 SpringBoot官網建置、快速啟動的問題怎麼解決

SpringBoot官網建置、快速啟動的問題怎麼解決

May 11, 2023 am 09:25 AM
springboot

    SpringBoot概述

    #SpringBoot 是由Pivotal團隊提供的全新框架,其設計目的是用來簡化Spring應用的初始建置以及開發流程。

    大家已經感受了SpringBoot 程序,回過頭看看SpringBoot 主要作用是什麼,就是簡化Spring 的搭建過程和開發過程。

    原始Spring 環境建置與開發有下列問題:

    • #配置繁瑣依賴

    • ##設定繁瑣

    SpringBoot 程式優點恰巧就是針對Spring 的缺點

      ## 自動配置。這個是用來解決
    • Spring

      程式配置繁瑣的問題

    • #開始依賴。這個是用來解決
    • Spring

      程式依賴設定繁瑣的問題

    • 輔助功能(內建伺服器,…)。我們在啟動
    • SpringBoot

      程式時既沒有使用本地的 tomcat 也沒有使用 tomcat 插件,而是使用 SpringBoot 內建的伺服器。

    • 接下來我們來說一下
    SpringBoot

    的起始依賴起始依賴

    我們使用

    Spring Initializr

    方式建立的Maven 工程的的pom.xml 設定檔中自動產生了許多包含starter 的依賴,如下圖

    SpringBoot官網建置、快速啟動的問題怎麼解決#這些依賴就是啟動依賴,接下來我們探討他是如何實現的。

    探索父工程

    從上面的檔案可以看到指定了一個父工程,我們進入到父工程,發現父工程中又指定了一個父工程,如下圖所示

    SpringBoot官網建置、快速啟動的問題怎麼解決再進入到該父工程中,在該工程中我們可以看到配置內容結構如下圖所示

    SpringBoot官網建置、快速啟動的問題怎麼解決上圖中的

    properties

    標籤中定義了各個技術軟體依賴的版本,避免了我們在使用不同軟體技術時考慮版本的相容問題。在properties 我們找servletmysql 的版本如下圖

    SpringBoot官網建置、快速啟動的問題怎麼解決##dependencyManagement

    標籤是進行依賴版本鎖定,但是並沒有導入對應的依賴;如果我們工程需要那個依賴只需要引入依賴的

    groupidartifactId 不需要定義version build

    標籤中也對插件的版本進行了鎖定,如下圖

    看完了父工程中SpringBoot官網建置、快速啟動的問題怎麼解決 pom.xml

    的配置後不難理解我們工程的依賴為什麼都沒有配置

    version探索依賴

    在我們建立的工程中的
    pom.xml
    中配置瞭如下依賴

    進入到該依賴,查看SpringBoot官網建置、快速啟動的問題怎麼解決pom.xml

    的依賴會發現它引入瞭如下的依賴

    裡面的引入了SpringBoot官網建置、快速啟動的問題怎麼解決spring-web

    spring-webmvc 的依賴,這就是為什麼我們的工程中沒有依賴這兩個套件還能正常使用springMVC 中的註解的原因。 而依賴 spring-boot-starter-tomcat

    ,從名字基本上能確認內部依賴了

    tomcat,所以我們的工程才能正常啟動。 結論:以後需要使用技術,只需要引入該技術對應的起始依賴即可

    小結

    ##starter

    #SpringBoot
      中常見專案名稱,定義了目前專案使用的所有專案座標,以達到減少依賴配置的目的
    • parent

    所有

    SpringBoot
      項目要繼承的項目,定義了若干個座標版本號(依賴管理,而非依賴),以達到減少依賴衝突的目的
    • spring-boot-starter-parent(2.5.0)與spring-boot-starter-parent(2.4.6)共57處座標版本不同

    實際開發

    使用任意座標時,僅書寫GAV中的G和A,V由SpringBoot提供

    G:groupid

    A:artifactId

    V:version

    如發生座標錯誤,再指定version(要小心版本衝突)

    程式啟動

    創建的每一個SpringBoot 程式時都包含一個類似於下面的類,我們將這個類別稱為引導類別

    @SpringBootApplication
    public class Springboot01QuickstartApplication {
        
        public static void main(String[] args) {
            SpringApplication.run(Springboot01QuickstartApplication.class, args);
        }
    }
    登入後複製

    注意:

    • SpringBoot 在建立專案時,採用jar的打包方式

    • SpringBoot的引導類別是專案的入口,運行main 方法就可以啟動專案

    #因為我們在pom.xml 中配置了spring-boot-starter-web 依賴,而該依賴透過前面的學習知道它依賴tomcat ,所以運行main 方法就可以使用tomcat 啟動咱們的工程。

    切換web伺服器

    現在我們啟動工程使用的是tomcat 伺服器,那能不能不使用tomcat 而使用jetty 伺服器,jetty 在我們maven 進階時講maven 私服使用的伺服器。而要切換 web 伺服器就需要將預設的 tomcat 伺服器給排除掉,要怎麼排除呢?使用 exclusion 標籤

    <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>
    登入後複製

    現在我們執行引導類別可以嗎?運行一下試試,列印的日誌資訊如下

    SpringBoot官網建置、快速啟動的問題怎麼解決

    程式直接停止了,為什麼呢?那是因為排除了 tomcat 伺服器,程式中就沒有伺服器了。所以此時不光要排除 tomcat 伺服器,也要引進 jetty 伺服器。在pom.xml 中因為jetty 的起步依賴

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
    登入後複製

    接下來再次運行引導類,在日誌資訊中就可以看到使用的是 jetty 伺服器

    SpringBoot官網建置、快速啟動的問題怎麼解決

    小結:
    透過切換伺服器,我們不難發現在使用SpringBoot 換技術時只需要導入技術的起步依賴即可。

    spring與springboot的比較

    我們前文做完入門案例後,可以發現兩者有很大的不同:

    SpringBoot官網建置、快速啟動的問題怎麼解決

    座標

    • Spring 程式中的座標需要自己寫,而且座標非常多

    • SpringBoot 程式中的座標是我們在建立工程時勾選自動產生的

    ##web3.0設定類別

    • Spring 程式需要自己寫這個配置類別。這個配置類別大家之前寫過,肯定感覺很複雜

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

    #配置類別

    Spring/SpringMVC 程式的設定類別需要自己書寫。而 SpringBoot 程式則不需要書寫。

    注意:基於Idea的

    Spring Initializr

    快速建置 SpringBoot 工程時需要連網。

    SpringBoot官網建置、快速啟動的問題怎麼解決官網建置工程

    在入門案例中之所以能快速建構SpringBoot 工程,是因為

    Idea

    使用了官網提供了快速建構SpringBoot官網建置、快速啟動的問題怎麼解決SpringBoot

    工程的元件實現的。那如何在官網進行工程建構呢?透過以下步驟建構

    進入SpringBoot官網進入到SpringBoot

    官網後拖到最下方就可以看到如下內容

    #然後點擊Spring Initializr 超連結就會跳到如下頁面

    ############這個頁面內容是不是感覺很眼熟的,這和我們使用###Idea### 快速建構###SpringBoot### 工程的介面基本上相同。在上面頁面輸入對應的資訊######選擇依賴######選擇###Spring Web### 可以點擊上圖右上角的###ADD DEPENDENCIES... CTRL B### 按鈕,就會出現如下介面###

    SpringBoot官網建置、快速啟動的問題怎麼解決

    生成工程

    以上步骤完成后就可以生成 SpringBoot 工程了。在页面的最下方点击 GENERATE CTRL + 回车 按钮生成工程并下载到本地,如下图所示

    SpringBoot官網建置、快速啟動的問題怎麼解決

    打开下载好的压缩包可以看到工程结构和使用 Idea 生成的一模一样,如下图

    SpringBoot官網建置、快速啟動的問題怎麼解決

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

    通过上面官网的操作,我们知道 Idea 中快速构建 SpringBoot 工程其实就是使用的官网的快速构建组件,那以后即使没有 Idea 也可以使用官网的方式构建 SpringBoot 工程。

    SpringBoot工程快速启动

    问题引入

    SpringBoot官網建置、快速啟動的問題怎麼解決

    以后我们和前端开发人员协同开发,而前端开发人员需要测试前端程序就需要后端开启服务器,这就受制于后端开发人员。为了摆脱这个受制,前端开发人员尝试着在自己电脑上安装 TomcatIdea ,在自己电脑上启动后端程序,这显然不现实。

    我们后端可以将 SpringBoot 工程打成 jar 包,该 jar 包运行不依赖于 TomcatIdea 这些工具也可以正常运行,只是这个 jar 包在运行过程中连接和我们自己程序相同的 Mysql 数据库即可。这样就可以解决这个问题,如下图

    SpringBoot官網建置、快速啟動的問題怎麼解決

    那现在问题是如何打包呢?

    打包

    由于我们在构建 SpringBoot 工程时已经在 pom.xml 中配置了如下插件

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    登入後複製

    所以我们只需要使用 Mavenpackage 指令打包就会在 target 目录下生成对应的 Jar 包。

    注意:该插件必须配置,不然打好的 jar 包也是有问题的。

    启动

    进入 jar 包所在位置,在 命令提示符 中输入如下命令

    java -jar 包名.jar
    登入後複製

    执行上述命令就可以看到 SpringBoot 运行的日志信息

    SpringBoot官網建置、快速啟動的問題怎麼解決

    以上是SpringBoot官網建置、快速啟動的問題怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    Springboot怎麼整合Jasypt實現設定檔加密 Springboot怎麼整合Jasypt實現設定檔加密 Jun 01, 2023 am 08:55 AM

    Jasypt介紹Jasypt是一個java庫,它允許開發員以最少的努力為他/她的專案添加基本的加密功能,並且不需要對加密工作原理有深入的了解用於單向和雙向加密的高安全性、基於標準的加密技術。加密密碼,文本,數字,二進位檔案...適合整合到基於Spring的應用程式中,開放API,用於任何JCE提供者...添加如下依賴:com.github.ulisesbocchiojasypt-spring-boot-starter2. 1.1Jasypt好處保護我們的系統安全,即使程式碼洩露,也可以保證資料來源的

    SpringBoot怎麼整合Redisson實現延遲隊列 SpringBoot怎麼整合Redisson實現延遲隊列 May 30, 2023 pm 02:40 PM

    使用場景1、下單成功,30分鐘未支付。支付超時,自動取消訂單2、訂單簽收,簽收後7天未進行評估。訂單超時未評價,系統預設好評3、下單成功,商家5分鐘未接單,訂單取消4、配送超時,推播簡訊提醒…對於延時比較長的場景、即時性不高的場景,我們可以採用任務調度的方式定時輪詢處理。如:xxl-job今天我們採

    怎麼在SpringBoot中使用Redis實現分散式鎖 怎麼在SpringBoot中使用Redis實現分散式鎖 Jun 03, 2023 am 08:16 AM

    一、Redis實現分散式鎖原理為什麼需要分散式鎖在聊分散式鎖之前,有必要先解釋一下,為什麼需要分散式鎖。與分散式鎖相對就的是單機鎖,我們在寫多執行緒程式時,避免同時操作一個共享變數產生資料問題,通常會使用一把鎖來互斥以保證共享變數的正確性,其使用範圍是在同一個進程中。如果換做是多個進程,需要同時操作一個共享資源,如何互斥?現在的業務應用通常是微服務架構,這也意味著一個應用會部署多個進程,多個進程如果需要修改MySQL中的同一行記錄,為了避免操作亂序導致髒數據,此時就需要引入分佈式鎖了。想要實現分

    springboot讀取檔案打成jar包後存取不到怎麼解決 springboot讀取檔案打成jar包後存取不到怎麼解決 Jun 03, 2023 pm 04:38 PM

    springboot讀取文件,打成jar包後訪問不到最新開發出現一種情況,springboot打成jar包後讀取不到文件,原因是打包之後,文件的虛擬路徑是無效的,只能通過流去讀取。文件在resources下publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

    Springboot+Mybatis-plus不使用SQL語句進行多表新增怎麼實現 Springboot+Mybatis-plus不使用SQL語句進行多表新增怎麼實現 Jun 02, 2023 am 11:07 AM

    在Springboot+Mybatis-plus不使用SQL語句進行多表添加操作我所遇到的問題準備工作在測試環境下模擬思維分解一下:創建出一個帶有參數的BrandDTO對像模擬對後台傳遞參數我所遇到的問題我們都知道,在我們使用Mybatis-plus中進行多表操作是極其困難的,如果你不使用Mybatis-plus-join這一類的工具,你只能去配置對應的Mapper.xml文件,配置又臭又長的ResultMap,然後再寫對應的sql語句,這種方法雖然看上去很麻煩,但具有很高的靈活性,可以讓我們

    SpringBoot怎麼自訂Redis實作快取序列化 SpringBoot怎麼自訂Redis實作快取序列化 Jun 03, 2023 am 11:32 AM

    1.自訂RedisTemplate1.1、RedisAPI預設序列化機制基於API的Redis快取實作是使用RedisTemplate範本進行資料快取操作的,這裡開啟RedisTemplate類,查看該類別的源碼資訊publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations,BeanClassLoaderAware{//聲明了value的各種序列化方式,初始值為空@NullableprivateRedisSe

    SpringBoot與SpringMVC的比較及差別分析 SpringBoot與SpringMVC的比較及差別分析 Dec 29, 2023 am 11:02 AM

    SpringBoot和SpringMVC都是Java開發中常用的框架,但它們之間有一些明顯的差異。本文將探究這兩個框架的特點和用途,並對它們的差異進行比較。首先,我們來了解一下SpringBoot。 SpringBoot是由Pivotal團隊開發的,它旨在簡化基於Spring框架的應用程式的建立和部署。它提供了一種快速、輕量級的方式來建立獨立的、可執行

    SpringBoot+Dubbo+Nacos 開發實戰教程 SpringBoot+Dubbo+Nacos 開發實戰教程 Aug 15, 2023 pm 04:49 PM

    本文來寫個詳細的例子來說下dubbo+nacos+Spring Boot開發實戰。本文不會講述太多的理論的知識,會寫一個最簡單的例子來說明dubbo如何與nacos整合,快速建構開發環境。

    See all articles