Spring Boot 建立HelloWord應用
學一門技術我們大多都是以Hello Word
來開始的,當我們執行程式看到正常的輸出Hello Word
會使自己無比的興奮。接下來我們來介紹以不同的姿勢建立Spring Boot
專案並編寫Hello word
程式。
演示環境
- JDK 1.8
- Maven 3.5.4
- IntelliJ IDEA 2018.2.5 (Ultimate Edition)
- Spring Boot 2.1.1.RELEASE
建立Spring Boot
專案
1、使用Maven
建立專案
使用Maven
建立專案手動新增依賴的方式,是最直接最能理解Spring Boot
mvn archetype:generate
命令來建立一個Maven
工程的骨架。
mvn archetype:generate -DgroupId=xin.jerome.demo -DartifactId=demo-helloword -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
在命令列中執行該命令,生成專案骨架,並匯入IDEA。
首先修改pom.xml
檔案,引入Spring Boot
相關的依賴,新增spring-boot-starter-parent
Spring Boot
的版本,它會幫我們做版本仲裁,避免了因版本不同而引起的版本衝突的問題。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
引入spring-boot-starter-web
依賴,這個依賴封裝好了Spring Mvc
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
引入spring-boot-starter-test
依賴,方便我們對我們的Spring Boot
專案進行測試相關的操作。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
引入spring-boot-maven-plugin
依賴,方便我們對我們的Spring Boot
專案進行打包。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
到這兒我們就完成了我們的新增所有的基礎依賴,會有如下結構:
<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>xin.jerome.demo</groupId>
<artifactId>demo-helloword</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>demo-helloword</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
接下來我們需要在包的根路徑下編寫HelloApplication
作為我們的專案的啟動類。
package xin.jerome.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Spring Boot專案的啟動類
*
* @author Jerome Zhu
*/
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
這裡有兩個需要注意的點,一是我們需要在我們的類上新增@SpringBootApplication
註解,二是我們需要呼叫SpringApplication
的靜態run
方法,將我們主類和引數作為run
方法的引數。到這兒我們專案就建立完成了,我們就可以啟動我們的Spring Boot
專案了,檢視啟動日誌我們會發現啟動在了Tomcat
的8080
埠。到這裡其實我們與一個標準的Spring Boot
專案結構還需要一些其它目錄,具體參照第二種方法建立的官方標準結構。
說明一下
Spring Boot
使用的是內嵌的Tomcat
容器。
2、使用start.spring.io
進行建立專案
Spring官方提供了Spring Initializr來讓我們便利的建立Spring Boot
專案,操作步驟:
- 首先選擇專案的構建工具,這裡我們選擇
Maven
。 - 選擇程式語言,這裡選
Java
。 - 選擇
Spring Boot
的版本,我這裡使用的是2.1.1.RELEASE
版本。 - 在左下方填寫
Maven
的座標。 - 在
Search for dependencies
中搜索web
來新增想要的依賴。 - 最後只需要點選
Generate Project
按鈕來生成專案即可。
附一張點選Generate Project
按鈕的之前的圖片。
建立完專案之後,使用IDEA
匯入專案即可。
3、使用IntelliJ IDEA建立專案
這個需要說明一下,這個功能只有旗艦版有,社群版是沒有這個功能的。網上破解的方法有很多,大家自行解決吧,當然有實力的自行付費也是可以的。建立的步驟:
- 開啟工具,點選
New Project
,選擇Spring Initializr
,選擇專案的JDK
,然後點選Next
。 - 填寫
Maven
的座標資訊,專案相關的描敘資訊、版本等等,然後點選Next
。 - 接下來就是選擇
Spring Boot
的版本(在右上方)和專案相關依賴,之後一路Next
就行。
附一張第三步的圖片。
其實IDEA
建立專案和Spring Initializr
建立是一樣的,只不過使用工具相對比較方便。
編寫HelloWord
程式
1、編寫Controller
通過上面的三種方法建立好的Spring Boot
專案,離我們的HelloWord
也就差一步。接下來我們就新建一個包controller
並且在包下建立HelloController
類。
package xin.jerome.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Hello{@link RestController}
*
* @author Jerome Zhu
*/
@RestController
public class HelloController {
@GetMapping("")
public String sayHello() {
return "Hello Jerome !";
}
}
在這個HelloController
類中我們使用到了兩個註解@RestController
和@GetMapping
。其中@RestController
其實是@Controller
和@ReponseBody
的組合註解,標明瞭我們這個類會作為一個Spring
應用的元件,在應用啟動進行包掃描的時候會被載入到Spring
的容器中。另外@GetMapping
其實就是@RequestMapping(method = RequestMethod.GET)
的簡化版。
2、測試Controller
專案中我們寫完一個方法後,對程式碼的測試也是必不可少的。這裡我們就那使用Maven
建立的專案來演示,我們首先編寫測試的主檔案。
package xin.jerome.demo;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* Spring Boot 專案測試主檔案
*
* @author Jerome Zhu
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloApplicationTests {
}
接下來編寫Controller
的測試檔案:
package xin.jerome.demo.controller;
import org.junit.Test;
import xin.jerome.demo.HelloApplicationTests;
import static org.junit.Assert.*;
/**
* {@link HelloController} 測試
*
* @author Jerome Zhu
*/
public class HelloControllerTests extends HelloApplicationTests {
@Test
public void sayHello() {
assertEquals("Hello Jerome !",new HelloController().sayHello());
}
}
這裡我們繼承了HelloApplicationTests
的主測試檔案,這樣我們就不用在每個類中配置應用測試相關的環境,只需要在主類中配置好就行。
執行Spring Boot
專案
1、使用IDEA
執行專案
我們可以在專案的主類HelloApplication
執行我們的main
方法就行了,當看到Tomcat started on port(s): 8080
這句話的時候 ,說明我們的應用就已經執行成功了。
2、使用Jar
的方式執行專案
不知大家是否還記得我們在使用Maven
建立專案的時候,引入了一個spring-boot-maven-plugin
的依賴,這個依賴就是為了幫助我們對專案進行打包的。
使用Maven
命令對專案進行打包:
mvn clean package -Dmaven.test.skip=true
執行完該命令後,在專案根目錄下的target
目錄下回生成一個xxx.jar
,這裡我生成的是demo-helloword-1.0-SNAPSHOT.jar
。
在命令列中,切換到target
目錄下使用java -jar
的命令執行專案:
java -jar demo-helloword-1.0-SNAPSHOT.jar
我們同樣能看到啟動日誌Tomcat started on port(s): 8080
的輸出,代表我們的應用啟動成功了。
訪問專案
我們通過兩種方式運行了我們的應用,接下來我們通過瀏覽器訪問http://localhost:8080/
在瀏覽器中會有如下圖的結果:
總結
通過我們上面的一頓操作,我們學會了三種建立Spring Boot
專案的姿勢和兩種執行Spring Boot
專案的方法。其中使用Maven
建立專案和使用Jar
的方式執行專案是動手操作能力相對比較強的,會讓我們對Spring Boot
專案印象更加深刻。當然建立方式和執行方式不止我介紹的這幾種,上面的已經滿足了我們日常的需求。
具體程式碼請參考GitHub:spring-boot-demo-helloword小節。