banner
jzman

jzman

Coding、思考、自觉。
github

Spring Boot系列之開發一個接口

PS:任何時候只要決定開始都不算晚。

Spring Boot 是用來簡化 Spring 應用程序的開發的,可以減少不必要的配置過程,其主要特性包括 Spring Boot Starter、自動配置、命令行接口、Actuator 等,作為 Android 開發者對 Spring Boot 的學習將以會使用為主,所有文章會基於對應的案例,本篇文章將從以下幾個方面介紹如何使用 Spring Boot 開發一個接口:

  1. Spring Boot 項目初始化
  2. 使用 IDEA 創建 Spring Boot 項目
  3. Spring Boot 項目目錄結構
  4. 簡述 POM 文件
  5. 實現一個簡單的接口
  6. 接口測試

Spring Boot 項目初始化#

創建 Spring 應用程序都是從 Spring Initializr 開始,可以快速的選擇項目的依賴項,可以訪問 https://start.spring.io/ 來完成 Spring 應用程序的創建,如下圖所示:

0

通過配置可生成對應配置信息的項目源碼包,使用 IntelliJ IDEA 或其他 IDE 打開即可。

使用 IDEA 創建 Spring Boot 項目#

最常見的方式肯定是使用 IDE 來進行 Spring 相關項目的創建,這裡選擇 IntelliJ IDEA 來創建 Spring Boot 項目。

第一步:選擇 File->New->Project,如下:

image

第二步:選擇 Spring Initializr,Project SDK 至少為 JDK 1.8,然後選擇 Next:

image

第三步:根據項目配置項目信息,然後選擇 Next:

image

第四步:選擇 Web->Spring Web 以及 Spring Boot 的版本,這一步實際上就是為該項目添加了支持 Web 開發的依賴,之後會在 pom 文件中看到相關依賴,然後選擇 Next:

image

第五步:選擇 Finish 完成項目的創建:

image

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">
    <!--pom模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!--繼承的父項目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <!--項目信息-->
    <groupId>com.manu</groupId>
    <artifactId>spring-boot-hello-world</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!--項目產生的構件類型,默認jar,其他如war、rar、ejb、ear、par等-->
    <packaging>jar</packaging>
    <name>spring-boot-hello-world</name>
    <description>Spring Boot sample for Hello World!</description>

    <!--屬性設置-->
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!--依賴-->
    <dependencies>
        <!--支持Web-->
        <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>

至於 pom 文件的其他具體配置這裡不做細究。

實現一個簡單的接口#

根據上面步驟項目已經創建好了,項目啟動類如下:

@EnableAutoConfiguration
@ComponentScan
@Configuration
//@SpringBootApplication
public class SpringBootHelloWorldApplication {
    public static void main(String[] args) {
        // 啟動程序,包括Spring容器、內嵌的Tomcat等
        SpringApplication.run(SpringBootHelloWorldApplication.class, args);
    }
}

其中 @SpringBootApplication 相當於 @EnableAutoConfiguration@ComponentScan@Configuration 一起使用,主要用來配置啟動類,這裡將在此基礎上實現一個接口,首先創建一個 MessageBean 作為返回的實體類,如下:

/**
 * @Desc: MessageBean
 * @Author: jzman
 * @Date: 2020/3/6 15:51.
 */
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 消息轉換器自動支持,最終使用 MappingJackson2HttpMessageConverterMessageBean 對象轉換為對應的 json 格式

/**
 * @Desc: HelloWorldController
 * @Author: jzman
 */
//@Controller
//@ResponseBody
@RestController
public 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 ,運行成功截圖如下:

image

訪問下面接口查看返回的數據:

http://localhost:8080/message?author=jzman&message=Hello

返回數據如下:

{"id":3,"author":"jzman","message":"Hello"}

至此,使用 Spring Boot 實現了一個簡單的接口,接口配置方式類似於 Android 開發中的 Retrofit,使用註解輕鬆完成相關配置。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。