最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot集成SpringDoc接口文檔方式

 更新時間:2026年01月04日 08:42:59   作者:TheTsing  
使用Spring Boot 3.0、JDK 17和Springdoc 2.2創(chuàng)建一個簡單的API文檔生成器,首先創(chuàng)建了一個Spring Boot項目并引入了Springdoc依賴,然后編寫了一個配置文件SpringDocConfig.java,啟動項目后,可以通過訪問http://localhost:8080/swagger-ui/index.html來查看生成的API文檔

前言

基于springboot3.0+jdk17+springdoc2.2實現(xiàn)。

一、創(chuàng)建springboot項目,引入springdoc依賴



 

二、編寫springdoc配置文件SpringDocConfig.java

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.media.Content;
import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
import org.springdoc.core.properties.SwaggerUiConfigProperties;
import org.springdoc.core.utils.Constants;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;

/**
 * SpringDoc配置類
 *
 * @author TheTsing
 */
@Configuration
@ConditionalOnProperty(name = Constants.SPRINGDOC_ENABLED, matchIfMissing = true)
public class SpringDocConfig {

    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info().title("API Documentation").version("snapshot"))
                .schemaRequirement(HttpHeaders.AUTHORIZATION,
                        new SecurityScheme()
                                // 普通 Token
                                //.name(HttpHeaders.AUTHORIZATION)
                                //.type(SecurityScheme.Type.APIKEY)
                                //.in(SecurityScheme.In.HEADER)
                                // Bearer Token
                                .name(HttpHeaders.AUTHORIZATION)
                                .type(SecurityScheme.Type.HTTP)
                                .scheme("bearer"))
                .addSecurityItem(new SecurityRequirement().addList(HttpHeaders.AUTHORIZATION));
    }

    @Bean
    public GlobalOpenApiCustomizer globalOpenApiCustomizer() {
        return openApi -> openApi.getPaths().values().stream().flatMap(pathItem -> pathItem.readOperations().stream()).forEach(operation -> {
            operation.getResponses().addApiResponse(String.valueOf(HttpStatus.BAD_REQUEST.value()),
                    new ApiResponse().description("客戶端請求存在語法錯誤或業(yè)務(wù)異常").content(new Content().addMediaType(MediaType.TEXT_PLAIN_VALUE, new io.swagger.v3.oas.models.media.MediaType().example(HttpStatus.BAD_REQUEST.getReasonPhrase()))));
            operation.getResponses().addApiResponse(String.valueOf(HttpStatus.UNAUTHORIZED.value()),
                    new ApiResponse().description("認證失敗").content(new Content().addMediaType(MediaType.TEXT_PLAIN_VALUE, new io.swagger.v3.oas.models.media.MediaType().example(HttpStatus.UNAUTHORIZED.getReasonPhrase()))));
            operation.getResponses().addApiResponse(String.valueOf(HttpStatus.FORBIDDEN.value()),
                    new ApiResponse().description("沒有權(quán)限").content(new Content().addMediaType(MediaType.TEXT_PLAIN_VALUE, new io.swagger.v3.oas.models.media.MediaType().example(HttpStatus.FORBIDDEN.getReasonPhrase()))));
            operation.getResponses().addApiResponse(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()),
                    new ApiResponse().description("服務(wù)器內(nèi)部錯誤").content(new Content().addMediaType(MediaType.TEXT_PLAIN_VALUE, new io.swagger.v3.oas.models.media.MediaType().example(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase()))));
        });
    }

    @Bean
    @Primary
    public SwaggerUiConfigProperties swaggerUiConfig() {
        SwaggerUiConfigProperties config = new SwaggerUiConfigProperties();
        config.setPersistAuthorization(true);
        config.setFilter("true");
        config.setDefaultModelsExpandDepth(-1);
        config.setDefaultModelExpandDepth(10);
        config.setDisplayRequestDuration(true);
        config.setDocExpansion("none");
        config.setShowCommonExtensions(true);
        return config;
    }

}

三、啟動項目訪問文檔

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



 

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot jar主清單屬性丟失解決方案

    Springboot jar主清單屬性丟失解決方案

    這篇文章主要介紹了Springboot jar主清單屬性丟失解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • RabbitMQ消息拒絕如何解決

    RabbitMQ消息拒絕如何解決

    這篇文章主要介紹了RabbitMQ消息拒絕如何解決問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java中的i++和++i的區(qū)別詳解

    java中的i++和++i的區(qū)別詳解

    這篇文章主要介紹了java中的i++和++i的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java?中如何使用?stream?流

    Java?中如何使用?stream?流

    這篇文章主要介紹了Java中如何使用stream流,文章圍繞Stream?API支持的許多操作展開主題,感興趣的小伙伴可以參考一下
    2022-09-09
  • Mybatis查詢時的延遲加載解析

    Mybatis查詢時的延遲加載解析

    這篇文章主要介紹了Mybatis查詢時的延遲加載解析,先從單表查詢,需要時再從關(guān)聯(lián)表去關(guān)聯(lián)查詢,能大大提高數(shù)據(jù)庫性能,因為查詢單表要比關(guān)聯(lián)查詢多張表速度要快,延遲加載分為兩種:深度延時加載,侵入式延遲加載,需要的朋友可以參考下
    2023-10-10
  • 淺談MyBatis 中的特殊字符串處理

    淺談MyBatis 中的特殊字符串處理

    在使用MyBatis進行數(shù)據(jù)庫操作時,我們常常會遇到需要處理特殊字符串的情況,本文就來介紹一下MyBatis特殊字符串處理,具有一定的參考價值,感興趣的可以了解一下
    2026-02-02
  • 基于java實現(xiàn)一個脫敏組件

    基于java實現(xiàn)一個脫敏組件

    這篇文章主要為大家詳細介紹了如何基于java實現(xiàn)一個脫敏組件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • Java Instrumentation從概念到基本用法詳解

    Java Instrumentation從概念到基本用法詳解

    Java Instrumentation是java.lang.instrument包提供的 API,允許開發(fā)者在類被JVM 加載時對其進行修改,或者在運行時重新定義類的字節(jié)碼,本文給大家介紹Java Instrumentation從概念到基本用法詳解,感興趣的朋友一起看看吧
    2025-09-09
  • mybatis-plus中BaseMapper入門使用

    mybatis-plus中BaseMapper入門使用

    本文主要介紹了mybatis-plus中BaseMapper入門使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • SpringBoot + MapStruct 屬性映射工具的使用詳解

    SpringBoot + MapStruct 屬性映射工具的使用詳解

    MapStruct 是一個代碼生成器,簡化了不同的 Java Bean 之間映射的處理,所謂的映射指的就是從一個實體變化成一個實體。接下來通過本文給大家介紹SpringBoot + MapStruct 屬性映射工具的使用,需要的朋友可以參考下
    2021-09-09

最新評論

塔河县| 湄潭县| 博湖县| 延川县| 凌海市| 高阳县| 江孜县| 疏勒县| 东源县| 德格县| 嵊州市| 泌阳县| 合川市| 鄢陵县| 中西区| 西峡县| 汝阳县| 库伦旗| 西昌市| 长白| 甘孜县| 体育| 荥阳市| 营口市| 威远县| 新津县| 屏东市| 湘西| 启东市| 隆林| 安宁市| 寻甸| 乳山市| 弥渡县| 潮安县| 丰台区| 余庆县| 怀仁县| 射阳县| 精河县| 盘锦市|