知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot 所有端點獲取

REST,Spring Boot
HongKong
7
03:44 AM · Dec 06 ,2025

1. 概述

當與 REST API 交互時,通常需要檢索所有 REST 端點。例如,我們可能需要將所有請求映射端點保存到數據庫中。在本教程中,我們將探討如何在 Spring Boot 應用程序中獲取所有 REST 端點。

2. 映射端點

在 Spring Boot 應用程序中,我們通過在控制器類中使用 <em/>@RequestMapping 註解來暴露 REST API 端點。 獲取這些端點有三種方法:事件監聽器、Spring Boot Actuator 或 SpringDoc 庫。

3. 基於事件監聽器的方法

為了創建 REST API 服務,我們在控制器類中使用 <em @RestController</em><em @RequestMapping</em>。這些類在 spring 應用上下文中註冊為 spring 託管的 Bean。因此,我們可以使用事件監聽器在應用程序上下文準備就緒時獲取端點。定義監聽器有兩...

3.1. ApplicationListener 接口

在實現 ApplicationListener 接口時,必須定義 onApplicationEvent() 方法:

@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
    ApplicationContext applicationContext = event.getApplicationContext();
    RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext
        .getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class);
    Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping
        .getHandlerMethods();
    map.forEach((key, value) -> LOGGER.info("{} {}", key, value));
}

通過這種方式,我們使用 ContextRefreshedEvent 類。此事件在 ApplicationContext 初始化或刷新時發佈。Spring Boot 提供了許多 HandlerMapping 實現。其中之一是 RequestMappingHandlerMapping 類,它檢測請求映射並由 @RequestMapping 註解使用。因此,我們在 ContextRefreshedEvent 事件中使用該 Bean。

3.2. <em @EventListener</em> 註解

使用另一種方式來映射我們的端點,即使用 <em @EventListener</em> 註解。我們直接將該註解應用於處理 <em ContextRefreshedEvent</em> 的方法:

@EventListener
public void handleContextRefresh(ContextRefreshedEvent event) {
    ApplicationContext applicationContext = event.getApplicationContext();
    RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext
        .getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class);
    Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping
        .getHandlerMethods();
    map.forEach((key, value) -> LOGGER.info("{} {}", key, value));
}

4. Actuator 方式

通過 Spring Boot Actuator 功能,還可以獲取所有端點的列表。

4.1. Maven 依賴

為了啓用此功能,我們將向我們的 pom.xml文件中添加 spring-boot-starter-actuator Maven 依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

4.2. 配置

默認情況下,僅提供 /health 和 /info 兩個端點。當添加 spring-boot-actuator 依賴後,要啓用所有 actuator 端點,可以通過在我們的 application.properties 文件中添加一個屬性來實現:

management.endpoints.web.exposure.include=*

或者,我們可以簡單地暴露端點以檢索映射

management.endpoints.web.exposure.include=mappings

一旦啓用,我們的應用程序的 REST API 端點位於 http://host/actuator/mappings

5. SpringDoc

SpringDoc 庫還可以用於列出 REST API 的所有端點。

5.1. Maven 依賴

為了將其添加到我們的項目中,我們需要在 <em >pom.xml</em> 文件中添加 <em >springdoc-openapi-ui</em> 依賴:

<dependency>
     <groupId>org.springdoc</groupId>
     <artifactId>springdoc-openapi-ui</artifactId>
     <version>1.7.0</version>
</dependency>

5.2. 配置

讓我們通過定義 OpenAPI 豆來創建配置類:

@Bean
public OpenAPI openAPI() {
    return new OpenAPI().info(new Info().title("SpringDoc example")
        .description("SpringDoc application")
        .version("v0.0.1"));
}

要訪問 REST API 端點,請在瀏覽器中訪問以下 URL:

http://localhost:8080/swagger-ui/index.html

6. 結論

本文介紹瞭如何在 Spring Boot 應用程序中使用事件監聽器、Spring Boot Actuator 和 SpringDoc 庫來檢索請求映射端點的方法。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.