快速體驗Spring Boot瞭解使用、運行和打包 | SpringBoot 2.7.2學習系列

来源:https://www.cnblogs.com/youyacoder/archive/2022/08/02/16544627.html
-Advertisement-
Play Games

SpringBoot 2.7.2 學習系列,本節內容快速體驗Spring Boot,帶大家瞭解它的基本使用、運行和打包。 Spring Boot 基於 Spring 框架,底層離不開 IoC、AoP 等核心思想。Spring 4.0 提供了基於 Java Config 的開發方式,Spring Bo ...


SpringBoot 2.7.2 學習系列,本節內容快速體驗Spring Boot,帶大家瞭解它的基本使用、運行和打包。

Spring Boot 基於 Spring 框架,底層離不開 IoC、AoP 等核心思想。Spring 4.0 提供了基於 Java Config 的開發方式,Spring Boot 應運而生,可以簡化 Spring 應用開發過程,同時也可以快速方便的集成第三方框架,如 MyBatis、Redis 等。

0 版本說明

  1. 開發工具 IDEA 版本:2021.2
  2. Maven 版本: 3.6.3
  3. Spring Boot 版本:2.7.2
  4. JDK 版本:JDK 8
  5. MySQL 版本:MySQL 8

說明,當前 Spring Boot 2.x 最新穩定版為 2.7.2 ,JDK 8 需要以上版本、Maven 需要 3.5 以上版本。(本想基於 Spring Boot 3.x,但 3.x 需要 Java 17,優雅哥電腦還只是 JDK 8)

1 創建 Spring Boot 應用

1.1 創建工程

1)打開 idea,新建一個 Maven 項目,點擊“Next”

image-20220725222306684

2)輸入 Name、GroupId、ArtifactId,點擊“Finish”

image-20220725222537900

1.2 設置 IDEA

在 IDEA 的 Preferences 中設置 JDK、Maven

1)設置 Maven

image-20220725223111620

2)設置 JDK

image-20220725223300552

在 Module Settings 中設置 JDK

image-20220725223448668

首先設置 SDKs:

image-20220725223543208

接著在 “Project” 中選擇設置的 SDK

image-20220725223646265

最後在 “Modules” 中選擇 Language Level:

image-20220725223758470

2 添加 Spring Boot 支持

2.1 添加依賴

1)在 pom.xml 中添加 Spring Boot 依賴。

在爛大街的文章博客中,都是通過 parent 的方式繼承 spring-boot-starter-parent,如下:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.2</version>
    </parent>

這種方式幾乎都用於在 demo 編寫中,在大型項目或中大型企業中很少見到這麼使用的。因為每個 module 只能有一個 parent ,而在企業開發中,微服務有多個服務,多個服務一般會繼承自一個統一的 module,便於版本控制、通用功能等。如果在每個服務中都讓spring-boot-starter-parent 占據了 parent 節點,那如何繼承統一的 parent module 呢?

或許有人會說,在 parent module 中繼承 spring-boot-starter-parent。沒錯,確實可以這樣。但除了服務,還會有一些公共模塊(如對參數校驗、通用響應、分散式 Redis 鎖、Spring Doc等通用模塊)也繼承自這個parent module,這樣一來,這些公共module也被迫添加了壓根沒有使用 spring boot starter 依賴。

我的做法是通過 spring-boot-dependencies 來實現:

  1. properties 中定義 spring-boot-dependencies 版本號
  2. 在依賴管理 dependencyManagement 中,通過 pom 的方式、scope 為 import 添加 spring-boot-dependencies
  3. 在依賴dependencies中添加需要使用到的依賴。

pom.xml 文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yygnb.demo</groupId>
    <artifactId>hero-springboot-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!-- Spring Boot 版本 -->
        <spring-boot-dependencies.version>2.7.2</spring-boot-dependencies.version>
    </properties>

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

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

2.2 創建啟動類

創建啟動類:com.yygnb.demo.DemoApplication

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

3 測試運行

3.1 添加測試Controller

創建測試使用的 Controller:com.yygnb.demo.controller.DemoController

@RestController
@RequestMapping("demo")
public class DemoController {

    @GetMapping("hello")
    public String hello(String msg) {
        String result = "Hello Spring Boot ! " + msg;
        System.out.println(result);
        return result;
    }
}

3.2 啟動運行

運行DemoApplication 中的 main 方法即可啟動應用。控制台顯示如下,則應用啟動成功:

image-20220726003230302

在瀏覽器中訪問:

http://localhost:8080/demo/hello?msg=FirstTest

頁面上和控制臺中都會顯示:

Hello Spring Boot ! FirstTest

3.3 修改埠

Spring Boot 預設運行的埠為 8080,如果要修改運行的埠號,需要修改配置實現。Spring Boot 支持三種格式的配置文件:xmlymlyaml,在項目中使用 yml格式較多。

使用 yml 格式需要註意:

1. 使用冒號分隔屬性名和屬性值
2. 字元大小寫敏感
3. 層級之間縮進敏感(間隔兩個空格)
4. 屬性值前面需要加一個空格

Spring Boot 核心配置文件名為 application

src/main/resources 中創建配置文件application.yml

server:
  port: 9099

該配置指定了服務運行的埠號為 9099,重啟服務,將上面的訪問路徑中的8080修改為 9099 再次訪問。

4 打包

Maven 工程打包是通過 mvn 命令進行的。在控制臺中項目根目錄下執行下列命令:

mvn clean package

執行該命令後,會在 target 目錄下生成 hero-springboot-demo-1.0-SNAPSHOT.jar。查看該文件的大小,只有 4kb,這是因為直接打包僅僅會打包當前的代碼,相關使用到的 spring boot 的依賴並不會包含進去,此時的 jar 文件是不能直接運行的。如果要讓打包後的 jar 可以直接運行,需要在 pom.xml 中配置相關插件配置:

4.1 配置插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot-dependencies.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

重新執行 mvn clean pacakge,會在 target 中生成兩個文件:

  • hero-springboot-demo-1.0-SNAPSHOT.jar.original
  • hero-springboot-demo-1.0-SNAPSHOT.jar

前者是打包的原始文件,和配置插件前一樣,僅包含當前項目的代碼。後者就包含了 spring boot 有關依賴,內置 Tomcat,可以直接運行。

4.2 運行 jar

可通過 java 命令執行上面打包生成的可執行文件。在控制臺中執行:

java -jar target/hero-springboot-demo-1.0-SNAPSHOT.jar

命令執行後,依舊會啟動服務。

本文記錄了另一種依賴 spring boot 的方式,下一篇集成MyBatis Plus實現增刪改查。

image

今日優雅哥(youyacoder)學習結束,期待關註留言分享~~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼時候精靈圖呢? 通常在渲染頁面的時候,需要伺服器向我們發送數據,但有的時候一個頁面需要多張圖時,伺服器就會處於連續發圖的工作狀態,但如果我們把需要的圖都放在一張圖上,這樣可以大大的減少服務的工作負擔,打個比喻。伺服器發一張圖是,工作流程是:找到圖片——讀取圖片——發送圖片,如果是發送5個圖片時, ...
  • 蒼穹之邊,浩瀚之摯,眰恦之美; 悟心悟性,善始善終,惟善惟道! —— 朝槿《朝槿兮年說》 寫在開頭 我們都知道,經過多年的發展和無數Java開發者的不懈努力,Java已經由一門單純的電腦編程語言,逐漸演變成一套強大的以及仍在可持續發展中的技術體系平臺。 雖然,Java設計者們根據不同的技術規範,把 ...
  • 1. 登錄用戶數據獲取 登錄成功之後,在後續的業務邏輯中,開發者可能還需要獲取登錄成功的用戶對象,如果不使用任何安全管理框架,那麼可以將用戶信息保存在HttpSession中,以後需要的時候直接從HttpSession中獲取數據。在Spring Security中,用戶登錄信息本質上還是保存在 Ht ...
  • 24 類型標註 24.1 Python中的數據類型 在Python中有很多數據類型,比較常見如下所示: |整型 | 浮點型|字元串 | 列表|元組|字典|集合|布爾| | | | | | | | | | |int| float|str|list|tuple|dict|set|bool| 因Pytho ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 大家好,我是“良工說技術”。 今天給大家帶來的是springboot中的@ConditionalOnClass註解的用法。上次的@ConditionalOnBean註解還記得嗎? 一、@ConditionalOnClass註解初始 看下@CodidtionalOnClass註解的定義, 需要註意的有 ...
  • 一、緩存機制的原理 一個系統在面向用戶使用的時候,當用戶的數量不斷增多,那麼請求次數也會不斷增多,當請求次數增多的時候,就會造成請求壓力,而我們當前的所有數據查詢都是從資料庫MySQL中直接查詢的,那麼就可能會產生如下問題 ==頻繁訪問資料庫,資料庫訪問壓力大,系統性能下降,用戶體驗差== 解決問題 ...
  • 今天我們來講解leetcode案例分析,如何動態規劃的解題套路,態規劃的核心思想,以前經常會遇到動態規劃類型題目。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...