1、工具環(huán)境安裝
??推薦使用Spring Tool Suite4谷丸,官網(wǎng)下載:https://spring.io/tools。
??配套工具安裝lombok辉饱,官網(wǎng)下載:https://projectlombok.org/download礁芦。
2、初始化SpringBoot工程
??File -> New -> Spring Starter Project
??初始化 SpringBoot工程信息
??選擇 Spring Boot 版本重抖,選擇要使用的功能對應(yīng)的 Starter,然后點(diǎn)擊 Finish祖灰,IDE 會自動完成剩下的工作钟沛。
??Starter 使開發(fā)人員避免陷入各種依賴的版本兼容問題的泥淖,只要 Spring Boot 庫中有對應(yīng)的 Starter 即可一鍵引入局扶,并且官方保證依賴的兼容性恨统。
3叁扫、默認(rèn)配置和規(guī)則
??一個(gè) Spring Boot 工程完成初始化之后默認(rèn)自動生成的文件目錄結(jié)構(gòu)如下:
- mvnw和mvnw.cmd:這是Maven包裝器(wrapper)腳本。借助這些腳本畜埋,即便你的機(jī)器上沒有安裝Maven莫绣,也可以構(gòu)建項(xiàng)目。
- TacoCloudApplication.java:這是Spring Boot主類悠鞍,它會啟動項(xiàng)目对室。
- application.properties:默認(rèn)配置文件,若同時(shí)存在 application.properties 和 application.yml 則會優(yōu)先加載前者的配置咖祭,所以如果要使用 application.yml掩宜,必須刪除 application.properties。
- static:在這個(gè)文件夾下么翰,你可以存放任意為瀏覽器提供服務(wù)的靜態(tài)內(nèi)容(圖片牺汤、樣式表、JavaScript等)浩嫌,該文件夾初始為空檐迟。
- templates:這個(gè)文件夾中存放用來渲染內(nèi)容到瀏覽器的模板?件。這個(gè)文件夾初始是空的码耐,不過我們很快就會往里面添加Thymeleaf模板追迟。
-
TacoCloudApplicationTests.java:這是?個(gè)簡單的測試類,它能確保Spring應(yīng)用上下文可以成功加載骚腥。
4敦间、生成的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>sia</groupId>
<artifactId>taco-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>taco-cloud</name>
<description>Taco Cloud Example</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- Spring-Boot: thymeleaf(模板引擎) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Spring-Boot: web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- devtools:
1. 應(yīng)用自動重啟
2. 瀏覽器自動刷新(靜態(tài)資源如js、圖片桦沉、css等)和禁用模板緩存
3. 自動啟用H2數(shù)據(jù)庫
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- Spring-Boot: test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 通過以下依賴項(xiàng)來解決此問題每瞒,同時(shí)支持舊版 HTML 格式。因?yàn)榇a charset="UTF-8"> 這里沒有關(guān)閉元標(biāo)記纯露。 -->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
</dependency>
<!-- lombok: 自動代碼生成 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- Spring-Boot: validation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
spring-boot-starter-web : web 工程必須引入的 starter剿骨。
spring-boot-starter-thymeleaf : 使用 thymeleaf 模板引擎渲染網(wǎng)頁。
-
spring-boot-devtools :為 Spring 開發(fā)人員提供的遍歷的開發(fā)期工具埠褪,功能包括:
- 代碼變更后應(yīng)用會自動重啟浓利;
- 當(dāng)面向?yàn)g覽器的資源(如模板、JavaScript钞速、css)等發(fā)生變化時(shí)贷掖,會自動刷新瀏覽器;
- 自動禁用模板緩存渴语;
- 如果使用 H2 數(shù)據(jù)庫苹威,內(nèi)置 H2 控制臺。
DevTools 在運(yùn)行時(shí)驾凶,會在應(yīng)用程序側(cè)啟動一個(gè) LiveReload 服務(wù)器牙甫,瀏覽器也必須先安裝 LiveReload 插件掷酗,這樣就可以實(shí)現(xiàn)瀏覽器訪問網(wǎng)頁時(shí),一些靜態(tài)資源發(fā)生變化時(shí)窟哺,會自動刷新瀏覽器泻轰。
spring-boot-starter-test :為 Spring 程序提供編寫單元測試支持的 starter。
spring-boot-starter-validation :校驗(yàn)網(wǎng)頁提交的表單數(shù)據(jù)的合法性且轨。
lombok :通過注解 POJO浮声,使其不必寫構(gòu)造器、getter/setter旋奢。
nekohtml :使用 thymeleaf 模板時(shí)泳挥,若網(wǎng)頁模板中的 xml 標(biāo)簽沒有閉標(biāo)簽,可能會導(dǎo)致引擎解析異常黄绩,而加入本依賴可處理這種問題羡洁。
-
spring-boot-maven-plugin :maven 編譯插件玷过,功能包括:
- 提供一個(gè) Maven goal爽丹,允許通過 Maven 來運(yùn)行應(yīng)用;
- 確保依賴的所有庫都會包含在可執(zhí)行 Jar 文件中辛蚊,并且保證運(yùn)行時(shí)在類路徑下是可用的粤蝎;
- 在 Jar 中生成一個(gè) manifest 文件,將引導(dǎo)類聲明為可執(zhí)行 Jar 的主類袋马。
5初澎、主類
package tacos;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TacoCloudApplication {
public static void main(String[] args) {
SpringApplication.run(TacoCloudApplication.class, args);
}
}
??使用 @SpringBootApplication 表示是程序主類,負(fù)責(zé)引導(dǎo)應(yīng)用執(zhí)行虑凛。主類的包名是 tacos碑宴,默認(rèn) tacos.* 的包里的類都會被掃描到,如果使用了 @Service桑谍、@Component延柠、@Respository、@Controller 等注解锣披,則會被自動注冊為 bean贞间,若包名不符合該規(guī)則,或者想顯式指定包掃描雹仿,則指定注解的 scanBasePackages 屬性即可增热。
??比如要增加對包 com.foo 進(jìn)行掃描,則注解調(diào)整為:
@SpringBootApplication(scanBasePackages = {"tacos", "com.foo"})</pre>
6胧辽、處理 Web 請求
??Spring 自帶了一個(gè) Web 開發(fā)框架 Spring MVC峻仇。Spring MVC 的核心是控制器的理念,控制器是處理請求并以某種方式進(jìn)行信息相應(yīng)的類邑商。
??這里定義一個(gè)控制器摄咆,處理瀏覽器的 "/" 請求帆调。
package tacos;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home";
}
}
?? @Controller 表示這是一個(gè)控制器,可以響應(yīng)處理瀏覽器請求豆同;@GetMapping("/") 表示只響應(yīng)對 "/" 發(fā)起的 GET 請求番刊;方法返回值是一個(gè)字符串 "home",不代表直接返回這個(gè)字符串響應(yīng)影锈,而是表示要使用哪個(gè)視圖芹务,這個(gè)值會被解析為視圖的邏輯名,Spring 會從資源目錄(src/main/resources/templates
)下找到對應(yīng)的視圖文件 home.html鸭廷,內(nèi)容如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Taco Cloud</title>
</head>
<body>
<h1>Welcome to...</h1>
<img th:src="@{/images/TacoCloud.png}"></img>
<br>
<a href="/design">Start to design you taco!</a><br>
<a href="/valid-design">Start to design you taco! (With validation)</a>
</body>
</html>
??除了靜態(tài)的 HTML枣抱,這里還使用了 thymeleaf 模板引擎,可以用它來引用資源渲染數(shù)據(jù)辆床,作用類似于 JSP佳晶。
??啟動容器,Boot Dashboard 可以看到 Spring Boot 項(xiàng)目列表讼载,啟動的應(yīng)用會變綠轿秧,顯示使用了 devtools,應(yīng)用監(jiān)聽 8080 端口咨堤,上面的工具欄可以停止菇篡、重啟、運(yùn)行一喘、調(diào)試應(yīng)用驱还,可以為應(yīng)用打開一個(gè) web 瀏覽器和控制臺等。
??先點(diǎn)擊啟動凸克,再點(diǎn)擊瀏覽器议蟆,訪問效果如下
【演示項(xiàng)目github地址】
https://github.com/huyihao/Spring-Tutorial/tree/main/2%E3%80%81SpringBoot/taco-cloud