Spring Boot 快速入門示例
原文地址:Spring Boot 快速入門示例
越來越多的公司選擇使用 Spring Boot 來開發系統,它到底有什麼優點?為什麼越來越受歡迎?
Spring Boot 簡介
Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。使用 Spring Boot,可以輕鬆的建立獨立執行的程式,構建獨立的服務元件,是實現分散式架構、微服務架構利器。Spring Boot 簡化了第三方包的引用,通過提供的starter
,簡化了依賴包的配置。
快速開始
Spring Boot 專案依賴 Maven 3.2+ ,如果你還沒有安裝 Maven,可以按照Maven 官方文件進行安裝配置。
Spring Boot 依賴項使用 org.springframework.boot
groupId。通常,POM檔案將繼承 spring-boot-starter-parent
專案並宣告對一個或多個 starters
的依賴關係。 Spring Boot 還提供了一個可選的 Maven 外掛來建立可執行 jar。
下面是一個典型的 Spring Boot 專案 POM 檔案
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
< artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.16.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</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>
<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>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
快速搭建 Spring Boot 專案
1、訪問http://start.spring.io/ 頁面如下圖所示
2、構建工具選擇 Maven Project,語言選擇Java,Spring Boot 最新版本為 2.0.5,這裡選擇 1.5.16,填寫 Group 和 Artifact,在 Dependencies 處填寫 web 按回車引入 web 模組,點選 Generate Project
下載 Spring Boot 專案壓縮包。
3、解壓後,匯入 idea,File -> Open -> 選擇解壓後的資料夾 -> OK,jar 下載完成後,一個 Spring Boot 專案就搭建成功了。
Spring Boot 專案結構
如下圖所示
src/main/java
存放 Java 檔案src/main/resources
存放 Spring Boot 配置檔案src/test/java
存放單元測試程式碼
執行 Spring Boot 專案
Spring Boot 內嵌 Tomcat,執行 DemoApplication 類主方法即可執行,當看到控制檯日誌以下內容說明啟動成功了。
Tomcat started on port(s): 8080 (http) with context path ''
編寫一個 Hello Spring Boot 的 Controller
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
@GetMapping("/")
public String helloSpringBoot() {
return "Hello Spring Boot";
}
}
RestController 相當於 Controller + ResponseBody,該類的所有方法都會返回 json,不會跳轉頁面。
重新啟動 Spring Boot ,開啟瀏覽器訪問 http://localhost:8080 頁面就會顯示 Hello Spring Boot
單元測試
開啟的 src/test/java
DemoApplicationTests.java 測試類,編寫簡單的http請求來測試
package com.example.demo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Test
public void contextLoads() throws Exception {
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new DemoController()).build();
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andReturn();
MockMvcResultHandlers.print().handle(mvcResult);
String response = mvcResult.getResponse().getContentAsString();
System.err.println(response);
}
}
熱部署
只需要引入 spring-boot-devtools
模組即可實現熱部署
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
本文所有程式碼放在 Github 上,地址:demo
參考資料
https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/htmlsingle/