官术网_书友最值得收藏!

1.4 開發(fā)第一個Spring Boot應(yīng)用程序

本節(jié)將詳細(xì)介紹Spring Boot項(xiàng)目的創(chuàng)建方法、SpringBoot項(xiàng)目的目錄結(jié)構(gòu)及項(xiàng)目啟動的過程。

1.4.1 創(chuàng)建Spring Boot項(xiàng)目

創(chuàng)建Spring Boot項(xiàng)目的方式有多種,最常見的方式是使用官方提供的spring initializr。spring initializr是一個在線工具,用于快速生成一個新的Spring Boot項(xiàng)目。它提供了一個直觀的Web界面,使用戶能夠選擇所需的依賴項(xiàng)、項(xiàng)目元數(shù)據(jù)以及其他配置選項(xiàng),然后生成一個壓縮的項(xiàng)目包,可以直接下載并使用。

接下來,詳細(xì)介紹使用spring initializr創(chuàng)建項(xiàng)目的具體步驟。

(1)訪問spring initializr官方地址https://start.spring.io/,在打開的頁面中對項(xiàng)目進(jìn)行基本的設(shè)置,如圖1-17所示。

(2)指定項(xiàng)目類型、編程語言及構(gòu)建工具,分別對應(yīng)頁面中的Project、Language、Spring Boot選項(xiàng),構(gòu)建工具包括Maven、Gradle,編程語言可以選擇Java、Kotlin或Groovy,此處選擇Java語言,Maven工具,Spring Boot版本采用3.1.3。

圖1-17  spring initializr頁面

(3)指定項(xiàng)目的元信息,對應(yīng)頁面中的Project Metadata,此選項(xiàng)用于定義和描述項(xiàng)目的元數(shù)據(jù)。它們的主要目的是幫助標(biāo)識唯一的項(xiàng)目,并提供有關(guān)項(xiàng)目的基本信息,包括Group、Artifact、Name、Description和Package name等,此處使用默認(rèn)設(shè)置,讀者可根據(jù)自己的情況進(jìn)行修改。

(4)指定項(xiàng)目的打包方式,對應(yīng)頁面中的Packaging選項(xiàng),有Jar和War兩種選擇,此處選擇Jar。

(5)指定Java版本,此處使用17。

(6)單擊右側(cè)的ADD DEPENDENCIES按鈕,可以在項(xiàng)目中添加額外的依賴。例如,創(chuàng)建一個Web應(yīng)用程序,可以選擇Spring Web,如圖1-18所示。

圖1-18 添加額外的依賴

(7)單擊GENERATE按鈕,將生成一個包含你選擇的所有依賴和配置的zip文件。下載并解壓zip文件。然后,可以使用IDEA打開和運(yùn)行它。

上述所有配置信息如圖1-19所示。

圖1-19 完整配置信息

在Maven和Spring Initializr中,Group、Artifact、Name和Description是用來定義和描述項(xiàng)目的元數(shù)據(jù)。它們的主要目的是幫助唯一地標(biāo)識一個項(xiàng)目,并提供有關(guān)項(xiàng)目的基本信息。以下是部分元數(shù)據(jù)的詳細(xì)解釋。

 Group(通常稱為Group ID):它通常表示項(xiàng)目組織的唯一標(biāo)識符,如公司、組織或團(tuán)隊(duì)的名稱。對于公司example.com,group ID可能是com.example。結(jié)合Artifact ID,Group ID可確保項(xiàng)目的唯一性。這是非常重要的,尤其是在將依賴添加到Maven倉庫時。

 Artifact(通常稱為Artifact ID):它表示具體項(xiàng)目或模塊的名稱。例如,一個公司可能有多個項(xiàng)目,Artifact ID用于區(qū)分它們。

 Name:它是項(xiàng)目的顯示名稱,通常比Artifact ID更具描述性,并可以包含空格和其他特殊字符。對于Artifact ID為user-service的項(xiàng)目,其Name可能是User Management Service。

當(dāng)在spring initializr或其他工具中定義這些元數(shù)據(jù)時,它們通常會被添加到生成的項(xiàng)目的pom.xml(對于Maven項(xiàng)目)或其他配置文件中。這確保了項(xiàng)目的唯一性和可識別性,同時也為項(xiàng)目提供了有關(guān)其目的和用途的描述性信息。

1.4.2 Spring Boot項(xiàng)目目錄結(jié)構(gòu)

將1.4.1節(jié)下載的demo.zip文件解壓至任意目錄,使用IDEA打開項(xiàng)目。注意,由于是使用spring initializr創(chuàng)建的項(xiàng)目,之前設(shè)置的Maven信息不會被應(yīng)用,因此,打開項(xiàng)目后需要重新設(shè)置Maven環(huán)境。

Spring Boot項(xiàng)目目錄結(jié)構(gòu)的關(guān)鍵部分說明如下。

 src/main/java/:此目錄包含項(xiàng)目的主要Java源代碼。

 src/main/resources/:存放項(xiàng)目的資源文件,如配置文件、國際化屬性文件、SQL腳本等。

 src/test/:此目錄用于存放項(xiàng)目的測試代碼和測試資源。

 pom.xml:Maven的配置文件,定義了項(xiàng)目的依賴、插件和其他設(shè)置。

 .gitignore:如果使用Git作為版本控制系統(tǒng),此文件定義了不應(yīng)該被加入版本控制的文件和目錄。

 Application.java:這是Spring Boot應(yīng)用程序的入口點(diǎn),它通常包含@SpringBootApplication注釋,并包含main方法來啟動應(yīng)用程序。

在resources目錄下又有如下3個目錄。

 static/:存放靜態(tài)資源,如HTML、CSS、JavaScript文件和圖片。在運(yùn)行時,這些文件都是直接可訪問的。

 templates/:如果使用的是模板引擎(如Thymeleaf),則模板文件會存放在這里。

 application.properties:Spring Boot的主配置文件。也可以選擇使用application.yml文件。

1.4.3 項(xiàng)目啟動過程

使用IDEA啟動項(xiàng)目,首先找到項(xiàng)目中的啟動類,其位于com.example.demo包下,名稱為DemoApplication,主要代碼如下。

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

這是一個非常標(biāo)準(zhǔn)的Spring Boot應(yīng)用程序的啟動類。代碼的首行是@SpringBootApplication注解,這是一個組合注解,它包含了多個其他的Spring注解。其中最主要的3個注解如下。

 @SpringBootConfiguration:表明這是一個Spring Boot配置類。

 @EnableAutoConfiguration:啟動Spring Boot的自動配置機(jī)制。這是Spring Boot的核心特性,它根據(jù)項(xiàng)目中的依賴自動配置應(yīng)用程序。例如,如果你的classpath下有H2數(shù)據(jù)庫和Spring Data JPA,Spring Boot會默認(rèn)配置一個內(nèi)存數(shù)據(jù)庫和一個帶有默認(rèn)設(shè)置的EntityManager。

 @ComponentScan:掃描當(dāng)前包和所有子包中的組件,如@Component、@Service、@Repository和@Controller類。

接下來是主類的定義,通常命名為{YourProjectName}Application,但這不是強(qiáng)制的。這個類的目的是作為應(yīng)用程序的入口點(diǎn)。類中定義了程序的main方法,這是Java程序的入口方法。當(dāng)從命令行或IDEA運(yùn)行一個Java程序時,它首先調(diào)用這個main方法。

在main方法中,調(diào)用了SpringApplication.run(DemoApplication.class, args);,這是啟動Spring Boot應(yīng)用程序的實(shí)際命令。

 DemoApplication.class:是傳遞給run方法的參數(shù),告訴Spring Boot這是啟動類,Spring Boot應(yīng)該從這里開始加載。

 args:這是從main方法傳遞來的參數(shù),允許命令行參數(shù)傳遞給Spring Boot應(yīng)用程序。例如,你可以使用命令行參數(shù)來指定Spring Boot配置屬性。

右擊代碼區(qū)域,在彈出的快捷菜單中選擇Run 'DemoApplication.main()'或單擊主類左側(cè)的運(yùn)行按鈕,均可啟動當(dāng)前的SpringBoot項(xiàng)目。當(dāng)運(yùn)行此類時,Spring Boot會啟動并初始化應(yīng)用程序,加載Spring context,并啟動所有配置的服務(wù)(如內(nèi)嵌的Tomcat服務(wù)器),如圖1-20所示。

項(xiàng)目啟動后,會在IDEA的底部控制臺出現(xiàn)啟動日志,如圖1-21所示。

這是一個典型的Spring Boot啟動日志,從啟動命令到應(yīng)用程序完全啟動,包含了各種關(guān)鍵信息。

Spring Boot標(biāo)志與應(yīng)用啟動日志信息如下。

 Spring Boot標(biāo)志:這個美觀的ASCII圖標(biāo)表示Spring Boot的啟動。它還顯示了當(dāng)前使用的Spring Boot的版本(v3.1.3)。

 應(yīng)用程序啟動信息:Starting DemoApplication using Java 17.0.8 with PID 17448 ...,應(yīng)用程序DemoApplication使用Java 17.0.8啟動,其進(jìn)程ID是17448。

Spring Boot項(xiàng)目啟動后,會自動開啟內(nèi)嵌的Tomcat服務(wù)器,其啟動日志信息內(nèi)容如下。

 Tomcat initialized with port(s): 8080 (http):內(nèi)嵌的Tomcat服務(wù)器初始化,監(jiān)聽8080端口。

圖1-20 啟動項(xiàng)目

圖1-21 項(xiàng)目啟動日志

 Starting service [Tomcat]:Tomcat服務(wù)開始啟動。

 Starting Servlet engine: [Apache Tomcat/10.1.12]:Servlet引擎開始啟動,使用的是Tomcat 10.1.12。

 Initializing Spring embedded WebApplicationContext:Spring的WebApplicationContext開始初始化。

 Root WebApplicationContext: initialization completed in 859 ms:WebApplicationContext初始化完成,花費(fèi)了859毫秒。

當(dāng)應(yīng)用啟動完畢后,會輸出如下日志信息。

 Tomcat started on port(s): 8080 (http) with context path:Tomcat完全啟動,監(jiān)聽8080端口。

 Started DemoApplication in 1.577 seconds (process running for 1.877):DemoApplication啟動完成,啟動耗時1.577秒。

上述所有日志提供了Spring Boot應(yīng)用程序從開始啟動到完全啟動的整個過程的詳細(xì)信息,這在診斷啟動問題或了解應(yīng)用程序啟動的細(xì)節(jié)時非常有用。

至此,已經(jīng)完成了Spring Boot項(xiàng)目從創(chuàng)建到運(yùn)行的所有必要步驟。

主站蜘蛛池模板: 宜丰县| 澄城县| 宁波市| 璧山县| 内乡县| 砚山县| 新和县| 资源县| 德保县| 湘阴县| 龙游县| 金塔县| 青州市| 凉山| 斗六市| 任丘市| 佛学| 敖汉旗| 伽师县| 广水市| 双辽市| 乌兰察布市| 石渠县| 泗水县| 常德市| 安图县| 岳普湖县| 六枝特区| 高邮市| 万州区| 沈阳市| 苍溪县| 三门县| 静宁县| 永吉县| 巴东县| 永寿县| 永济市| 金乡县| 密云县| 罗源县|