快速體驗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
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...