前言
網(wǎng)上介紹了許多如何創(chuàng)建Springboot項(xiàng)目,大多數(shù)基于IDE開發(fā)工具并且用Maven管理,如果在當(dāng)前的開發(fā)環(huán)境并不充裕下,我們可以直接使用Maven命令來(lái)創(chuàng)建管理SpringBoot項(xiàng)目,對(duì)于習(xí)慣使用命令來(lái)創(chuàng)建項(xiàng)目來(lái)說(shuō)比較的方便、同時(shí)更好的理解SpringBoot的項(xiàng)目結(jié)構(gòu)。
1.創(chuàng)建一個(gè)Maven項(xiàng)目
1.1使用Maven創(chuàng)建一個(gè)簡(jiǎn)單的Java項(xiàng)目
以VSCode為例,Ctrl + ` 快捷鍵打開終端
假設(shè)項(xiàng)目的名稱為 example
在控制臺(tái)中輸入如下Maven指令即可生成
mvn archetype:generate
"-DgroupId=com.project"
"-DartifactId=example"
"-DarchetypeArtifactId=maven-archetype-quickstart"
"-DinteractiveMode=false"
- -DgroupId=com.project:組id。
- -DartifactId=example:項(xiàng)目名稱,maven會(huì)根據(jù)這個(gè)名稱在當(dāng)前目錄下新建一個(gè)名為該名稱的目錄用于建立項(xiàng)目。
- -DarchetypeArtifactId:項(xiàng)目原型,使用哪種原型來(lái)創(chuàng)建項(xiàng)目的初始結(jié)構(gòu),在這里,我們先使用maven-archetype-quickstart創(chuàng)建一個(gè)簡(jiǎn)單的 Java 應(yīng)用。
- -DinteractiveMode=false :是否已交互模式進(jìn)行,如果是false的話就會(huì)采用默認(rèn)設(shè)置建立項(xiàng)目。
創(chuàng)建成功后如圖所示,控制臺(tái)所示
1.2項(xiàng)目結(jié)構(gòu)介紹
注意:上面構(gòu)建的只是一個(gè)簡(jiǎn)單的 Java 項(xiàng)目,如果是構(gòu)建 Web 項(xiàng)目,我們還需要對(duì)目錄結(jié)構(gòu)進(jìn)行調(diào)整,便于我們后續(xù)開發(fā),我們需要做如下調(diào)整。
- App.java 和 AppTest.java 這兩個(gè)文件我們不需要,可以直接刪除掉。
- 在 main 目錄下添加 resources 目錄,用于存放資源文件。
- 在 example/src/main/java/com/project包下創(chuàng)建 example包,并在 /example包下創(chuàng)建 exampleApplication.java 類,作為整個(gè)項(xiàng)目的啟動(dòng)項(xiàng)。
經(jīng)過調(diào)整,目錄結(jié)構(gòu)如下圖所示:
1.3添加項(xiàng)目依賴
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.project</groupId>
<artifactId>example</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>example</name>
<url>http://maven.apache.org</url>
<description>用戶權(quán)限管理系統(tǒng)</description>
<!-- 設(shè)置父模塊,這樣就可以繼承父模塊中的配置信息 -->
<parent>
<!-- Springboot依賴 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- 添加 web 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spirng Boot Maven 插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1.4添加啟動(dòng)類
在啟動(dòng)類中加入main方法,設(shè)置為啟動(dòng)類。
package com.project.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@ServletComponentScan
@SpringBootApplication
public class exampleApplication {
public static void main(String[] args) {
SpringApplication.run(exampleApplication.class,args);
System.out.println("你好,這里是example項(xiàng)目");
}
}
1.5編譯打包項(xiàng)目
終端輸入如下命令下載依賴
mvn clean install
執(zhí)行完畢后,項(xiàng)目結(jié)構(gòu)如下:
執(zhí)行完上面語(yǔ)句后(或者在創(chuàng)建完項(xiàng)目后),在項(xiàng)目根目錄下多了一個(gè) target 目錄。target 是用來(lái)存放項(xiàng)目構(gòu)建后的 jar 包、war 包以及編譯的 class 文件等文件,target 目錄下的所有內(nèi)容均為 Maven 構(gòu)建項(xiàng)目過程中生成的。
1.6添加controller內(nèi)容
項(xiàng)目觸目搭建成功,下面來(lái)編寫一個(gè)Controller接口來(lái)驗(yàn)證項(xiàng)目是否創(chuàng)建成功
- 在 example/src/main/java/com/project/example包下創(chuàng)建 system 包(可以去任何名稱),用于存放業(yè)務(wù)相關(guān)的代碼。
- 在 system 包下添加 controller 包,用于存放前端接口控制器的類。
- 在 controller 包下添加FirstController.java 類,作為項(xiàng)目啟動(dòng)的測(cè)試類。
package com.project.system.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController//Controller 里面的方法都以 json 格式輸出
public class FirstController {
@GetMapping("/first")
public String first(){
return "你好";
}
}
2.啟動(dòng)項(xiàng)目
下面將介紹兩種常用的控制臺(tái)啟動(dòng)項(xiàng)目的方式。
- 使用 Maven 啟動(dòng)項(xiàng)目。
- 運(yùn)行 jar 包啟動(dòng)項(xiàng)目。
此處我們是用Maven命令啟動(dòng)項(xiàng)目
2.1使用Maven啟動(dòng)項(xiàng)目
mvn package 編譯打包
mvn spring-boot:run 啟動(dòng)項(xiàng)目
啟動(dòng)完成后,控制臺(tái)出現(xiàn)如下圖所示即為啟動(dòng)成功:
3.SpringBoot配置文件詳解
3.1配置文件使用說(shuō)明
在 Spring Boot 項(xiàng)目中,支持如下兩種文件格式的配置文件。
application.properties
application.yml
下面我們來(lái)看看 properties 配置文件和 yml 配置文件的區(qū)別。
- application.properties 就是常規(guī)的 key=value 格式配置文件,例:
# 默認(rèn)加載配置項(xiàng)
spring.profiles.active=prod
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=root
properties 文件有一個(gè)缺點(diǎn),當(dāng)要配置的參數(shù)比較多時(shí),你就會(huì)發(fā)現(xiàn)它的層次不是那么清晰,不便于閱讀。而且很多同層級(jí)的名稱都是重復(fù)的。
- yml 文件的基本寫法為: key: (空格) value 。值得注意的是,鍵和值中間用冒號(hào)加上空格連接,缺一不可,否則無(wú)法讀取配置項(xiàng),案例如下。
spring:
profiles:
active: prod
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: root
注意:上下層級(jí)的關(guān)系用空格表示,空格格數(shù)沒有要求,只要是左對(duì)齊的一列數(shù)據(jù)都是同一個(gè)層級(jí)的就行。為了美觀建議使用 Tab 縮進(jìn)或者統(tǒng)一空 4 格區(qū)分上下級(jí)。
properties 文件和 yml 文件都作為配置文件,他們的目的并沒有區(qū)別,相比 properties 配置文件,yml 配置文件在寫的時(shí)候?qū)哟胃袕?qiáng)。Spring 官方推薦使用的格式是 .yml 格式,所以目前大部分 Spring Boot 的 Web 項(xiàng)目的配置文件都是使用 yml 文件。本篇文章中我們也將使用 yml 文件作為項(xiàng)目的配置文件。
3.2配置端口和路徑
在 /src/main/resources 目錄下創(chuàng)建 application.yml 文件,并寫入如下配置內(nèi)容,我們就可以修改項(xiàng)目的根路徑。
server:
# 配置端口
# port: 8080
servlet:
# 設(shè)置項(xiàng)目路徑
context-path: /example
添加完畢后,我們重新打包,運(yùn)行項(xiàng)目。
mvn package 編譯打包
mvn spring-boot:run 啟動(dòng)項(xiàng)目
打開瀏覽器,輸入localhost:8080/upms/hello 進(jìn)行訪問,如下圖所示:
3.3自定義配置屬性
除了系統(tǒng)提供的配置,我們也可以在 application.yml 中添加如下自定義的配置。
server:
# 配置端口
port: 8080
servlet:
# 設(shè)置項(xiàng)目路徑
context-path: /example
# 自定義配置
example:
name: example
version: 0.0.1
description: example項(xiàng)目
如果想使用配置項(xiàng),我們只需要在類的屬性前加上注解 @Value(“${屬性名}”),我們可以在 controller/FirstController.java 中添加如下內(nèi)容:
package com.project.example.system.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController // Controller 里面的方法都以 json 格式輸出
public class FirstController {
@Value("${example.name}")
private String appName;
@Value("${example.version}")
private String appVersion;
@Value("${example.description}")
private String appDescription;
@GetMapping("/Msg")
public String Msg() {
return "名稱:" + appName + "," +
"版本:" + appVersion + " ," +
"描述" + appDescription;
}
@GetMapping("/first")
public String first() {
return "你好";
}
}
添加完畢后,我們重新打包,運(yùn)行項(xiàng)目。
mvn package 編譯打包
mvn spring-boot:run 啟動(dòng)項(xiàng)目
打開瀏覽器,輸入localhost:8080/upms/Msg進(jìn)行訪問,如下圖所示:
3.4多環(huán)境配置
在開發(fā)項(xiàng)目的過程中,可能一套程序需要在不同的環(huán)境中發(fā)布,它的數(shù)據(jù)庫(kù)配置、端口配置或者其他配置各不相同,如果每次都來(lái)根據(jù)需要修改對(duì)應(yīng)的環(huán)境配置,是非常容易配置錯(cuò)誤的,造成不必要的麻煩。
通常這種情況下,我們可以針對(duì)不同的環(huán)境配置不同的配置文件來(lái)解決。在 Spring Boot 項(xiàng)目中,默認(rèn)支持下面這兩種格式的。
- application-{name}.properties
- application-{name}.yml
其中 {name} 對(duì)應(yīng)環(huán)境標(biāo)識(shí)。我們?cè)?Spring Boot 項(xiàng)目中也可以創(chuàng)建不同的配置文件,文件名以 application-{name}.yml 的格式。
- application-dev.yml 開發(fā)環(huán)境
- application-test.yml 測(cè)試環(huán)境
- application-prod.yml 生產(chǎn)環(huán)境
我們?cè)?src/main/java/resources 目錄下創(chuàng)建如下圖所示的配置文件。
在 application-dev.yml 配置文件中添加如下內(nèi)容。
# 自定義配置
example:
name: example
version: 0.0.2
description: example項(xiàng)目(開發(fā)環(huán)境)
在 application-prod.yml 配置文件中添加如下信息。
# 自定義配置
example:
name: example
version: 0.0.3
description: example項(xiàng)目(生產(chǎn)環(huán)境)
在 application-test.yml 配置文件中添加如下信息。
# 自定義配置
example:
name: example
version: 0.0.4
description: example項(xiàng)目(測(cè)試環(huán)境)
在 application-test.yml 配置文件中添加如下信息。
# 自定義配置
example:
name: example
version: 0.0.4
description: example項(xiàng)目(測(cè)試環(huán)境)
然后在配置文件 application.yml 中添加 spring.profiles.active 來(lái)設(shè)置當(dāng)前使用的環(huán)境,其中 test 代表默認(rèn)啟用 application-test.yml 配置文件。
也可以將 test 修改成 dev 或者 prod 后測(cè)試看下效果,這里我們就不再演示了。
4.個(gè)性化Banner配置
我們注意到 Spring Boot 項(xiàng)目啟動(dòng)時(shí),控制臺(tái)會(huì)打印自帶的 Banner,如下圖所示:
如果我們也想自己定制一個(gè)怎么辦,這里有個(gè)定制 Banner 的網(wǎng)站
英文ASCII藝術(shù)字,Spring Boot自定義啟動(dòng)Banner在線生成工具
文字、圖片都可以秀起來(lái),怎么秀就看你的了.
只需要在 /resources 目錄下創(chuàng)建一個(gè) banner.txt 文件,添加位置如下:
并在 banner.txt 文件中添加如下內(nèi)容。
_ __ _
___ __ __ __ _ _ __ | '_ \ | | ___
/ -_) \ \ / / _` | | ' \ | .__/ | | / -_)
\___| /_\_\ \__,_| |_|_|_| |_|__ _|_|_ \___|
_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|
"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'
添加完畢后,Spring Boot 啟動(dòng)的時(shí)候會(huì)去加載這個(gè)文件,重新編譯運(yùn)行就可以看到效果。
mvn package 編譯打包
mvn spring-boot:run 啟動(dòng)項(xiàng)目
雖然用處不大,但是看起來(lái)很炫酷,哈哈哈
結(jié)束
在本篇文章中,介紹了如何使用 Spring Boot 來(lái)搭建 Java Web 項(xiàng)目,通過 Maven 工具安裝、打包和運(yùn)行整個(gè)項(xiàng)目,項(xiàng)目構(gòu)建完畢后,設(shè)置了自定義配置項(xiàng),并在項(xiàng)目中使用配置信息,針對(duì)不同環(huán)境定制不同的配置項(xiàng)。并且提供一個(gè)簡(jiǎn)單的請(qǐng)求驗(yàn)證了項(xiàng)目的運(yùn)行效果,最后為項(xiàng)目定制了一個(gè) Banner。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-602359.html
以上為個(gè)人的學(xué)習(xí)使用心得,如有不對(duì)請(qǐng)指出,歡迎大家討論。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-602359.html
到了這里,關(guān)于使用Maven構(gòu)建SpringBoot項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!