1. 程式人生 > >Spring Boot 建立HelloWord應用

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專案了,檢視啟動日誌我們會發現啟動在了Tomcat8080埠。到這裡其實我們與一個標準的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按鈕的之前的圖片。

Spring Initializr

建立完專案之後,使用IDEA匯入專案即可。

3、使用IntelliJ IDEA建立專案

這個需要說明一下,這個功能只有旗艦版有,社群版是沒有這個功能的。網上破解的方法有很多,大家自行解決吧,當然有實力的自行付費也是可以的。建立的步驟:

  • 開啟工具,點選New Project,選擇Spring Initializr,選擇專案的JDK,然後點選Next
  • 填寫Maven的座標資訊,專案相關的描敘資訊、版本等等,然後點選Next
  • 接下來就是選擇Spring Boot的版本(在右上方)和專案相關依賴,之後一路Next就行。

附一張第三步的圖片。

IntelliJ IDEA

其實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小節。

原文連結:Spring Boot 建立HelloWord應用