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

Springboot集成SpringDoc接口文檔方式

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

前言

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

一、創(chuàng)建springboot項(xiàng)目,引入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("客戶端請求存在語法錯(cuò)誤或業(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("認(rèn)證失敗").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)部錯(cuò)誤").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;
    }

}

三、啟動(dòng)項(xiàng)目訪問文檔

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



 

總結(jié)

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

相關(guān)文章

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

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

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

    RabbitMQ消息拒絕如何解決

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

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

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

    Java?中如何使用?stream?流

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

    Mybatis查詢時(shí)的延遲加載解析

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

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

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

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

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

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

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

    mybatis-plus中BaseMapper入門使用

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

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

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

最新評論

渑池县| 静乐县| 佛坪县| 兴宁市| 休宁县| 汉源县| 安图县| 龙胜| 望奎县| 瓮安县| 秭归县| 繁昌县| 长沙县| 鹿邑县| 隆化县| 巨鹿县| 镇巴县| 西贡区| 清镇市| 尚志市| 如东县| 项城市| 察雅县| 二手房| 永登县| 惠东县| 巫山县| 龙井市| 凯里市| 茌平县| 诸城市| 旬邑县| 海南省| 宜兰市| 安图县| 新乡市| 昭通市| 北京市| 自贡市| 会昌县| 阜阳市|