PS:任何時候隻要決定開始都不算晚。
Spring Boot 是用來簡化 Spring 應用程式的開發的,可以減少不必要的配置過程,其主要特性包括 Spring Boot Starter、自動配置、指令行接口、Actuator 等,作為 Android 開發者對 Spring Boot 的學習将以會使用為主,所有文章會基于對應的案例,本篇文章将從以下幾個方面介紹如何使用 Spring Boot 開發一個接口:
- Spring Boot項目初始化
- 使用IDEA建立Spring Boot項目
- Spring Boot項目目錄結構
- 簡述POM檔案
- 實作一個簡單的接口
- 接口測試
Spring Boot項目初始化
建立 Spring 應用程式都是從 Spring Initializr 開始,可以快速的選擇項目的依賴項,可以通路
https://start.spring.io/
來完成 Spring 應用程式的建立,如下圖所示:

通過配置可生成對應配置資訊的項目源碼包,使用 IntelliJ IDEA 或其他 IDE 打開即可。
使用IDEA建立Spring Boot項目
最常見的方式肯定是使用 IDE 來進行 Spring 相關項目的建立,這裡選擇 IntelliJ IDEA 來建立 Spring Boot 項目。
第一步:選擇 File->New->Project,如下:
第二步:選擇 Spring Initializr,Project SDK 至少為 JDK 1.8,然後選擇 Next:
第三步:根據項目配置項目資訊,然後選擇 Next:
第四步:選擇 Web->Spring Web 以及 Spring Boot 的版本,這一步實際上就是為該項目添加了支援 Web 開發的依賴,之後會在 pom 檔案中看到相關依賴,然後選擇 Next:
第五步:選擇 Finish 完成項目的建立:
Spring Boot項目目錄結構
Spring Boot 項目的主要目錄結構如下:
│ pom.xml
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─manu
│ │ └─hello
│ │ SpringBootHelloWorldApplication.java
│ │
│ └─resources
│ │ application.properties
│ │
│ ├─static
│ └─templates
└─test
└─java
└─com
└─manu
└─hello
SpringBootHelloWorldApplicationTests.java
主要目錄與檔案介紹如下:
- pom.xml:項目基于 mavan 的依賴配置檔案,如果項目基于 gradle,則有對應的 gradle 檔案;
- src/main/java:項目源代碼目錄;
- src/main/resources:資源檔案目錄;
- src/test:測試檔案目錄;
- application.properties:配置檔案,也可以使用 yml 檔案進行配置;
- static:靜态資源檔案目錄,如 html、css、js 等;
- templates:模闆檔案目錄,如 Thymeleaf 等;
- SpringBootHelloWorldApplication:項目啟動類。
簡述POM檔案
POM 是項目對象模型(Project Object Model)的簡稱,maven 項目通過 xml 來進行項目配置,pom.xml 就是用來配置 maven 項目的,pom.xml 檔案類似于 Android 開發中的 build.gradle 檔案,當然 Spring Boot 項目也可以使用 gradle 來進行建構,主要用來管理項目依賴、配置項目資訊等,來看一下 Spring Web 項目的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>2.2.5.RELEASEversion><relativePath /> parent><groupId>com.manugroupId><artifactId>spring-boot-hello-worldartifactId><version>0.0.1-SNAPSHOTversion><packaging>jarpackaging><name>spring-boot-hello-worldname><description>Spring Boot sample for Hello World!description><properties><java.version>1.8java.version>properties><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope>dependency>dependencies><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin>plugins>build>project>
至于 pom 檔案的其他具體配置這裡不做細究。
實作一個簡單的接口
根據上面步驟項目已經建立好了,項目啟動類如下:
@[email protected]@Configuration//@SpringBootApplicationpublic class SpringBootHelloWorldApplication {public static void main(String[] args) {// 啟動程式,包括Spring容器、内嵌的Tomcat等
SpringApplication.run(SpringBootHelloWorldApplication.class, args);
}
}
其中
@SpringBootApplication
相當于
@EnableAutoConfiguration
、
@ComponentScan
和
@Configuration
一起使用,主要用來配置啟動類,這裡将在此基礎上實作一個接口,首先建立一個
MessageBean
作為傳回的實體類,如下:
public class MessageBean {private long id;private String author;private String message;public MessageBean(long id, String author, String info) {this.id = id;this.author = author;this.message = info;
}// ...
}
然後,建立對應的控制器類,其中注解
@RestController
将類
HelloWorldController
标記為一個控制器,該類裡面的方法的傳回都将被轉換成對象而不是頁面視圖,等價于注解
@Controller
和
@ResponseBody
一起使用。
傳回的
MessageBean
将會被轉換成
json
,這個過程由 Spring 的 HTTP 消息轉換器自動支援,最終使用
MappingJackson2HttpMessageConverter
将
MessageBean
對象轉換為對應的
json
格式
//@Controller//@[email protected] class HelloWorldController {private final AtomicLong counter = new AtomicLong();// @RequestMapping(value = "/message", method = RequestMethod.GET)@GetMapping("/message")public MessageBean message(@RequestParam(name = "author", defaultValue = "jzman") String author,
@RequestParam(name = "message", defaultValue = "Hello world!") String message) {return new MessageBean(counter.incrementAndGet(), author, message);
}
}
@RestController
相當于
@Controller
和
@ResponseBody
一起使用的效果,就是将 Controller 中傳回的對象轉換為對應的格式。
@Controller
負責的類的注入操作,這裡不進行深入,如果用過 Android 開發中的 Dagger 架構可有助于了解注解
@Controller
的使用,
@ResponseBody
主要是辨別将傳回的對象轉換為特定的格式,預設是 json 格式。
@RequestMapping
用于位址映射,可在類上和方法上使用,如果在類上使用,該類中所有響應請求的方法都要以此為父路徑,如果在方法上使用則表示目前響應的路徑,如上代碼中實作一個 GET 請求可以使用
@RequestMapping
,也可以使用
@GetMapping
,
@GetMapping
實際上預設指定了請求方法為
RequestMethod.GET
,此外
@RequestParam
用來配置請求參數。
接口測試
運作
SpringBootHelloWorldApplication
,運作成功截圖如下:
通路下面接口檢視傳回的資料:
http://localhost:8080/message?author=jzman&message=Hello
傳回資料如下:
{"id":3,"author":"jzman","message":"Hello"}
至此,使用 Spring Boot 實作了一個簡單的接口。
---END---
創作不易,點個“在看”