国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

甩掉 Swagger UI!SpringBoot API 文檔神器強(qiáng)勢登場

開發(fā) 后端
過去的 Swagger + SpringFox 方案,在新版本 Spring Boot 中已經(jīng)力不從心;而 SpringDoc 作為 OpenAPI 3 的原生實現(xiàn),不僅穩(wěn)定高效,還能通過最小化配置快速上手,滿足中大型項目的 API 文檔管理需求。

在現(xiàn)代后端開發(fā)中,API 文檔已經(jīng)成為項目協(xié)作的基石——它不僅幫助前后端快速對接,也能為運(yùn)維、測試提供可靠的接口依據(jù)。過去,我們在 Spring Boot 項目中常用 Swagger + SpringFox 來生成交互式文檔,但隨著 Spring 版本的升級,這一套組合逐漸顯露疲態(tài):維護(hù)停滯、版本不兼容、配置繁瑣…… 如果你還在為升級 Spring Boot 后 Swagger 失效而抓狂,那么今天介紹的 SpringDoc,將是你值得關(guān)注的下一代方案——它能在 Spring Boot 3.x + JDK17 環(huán)境下穩(wěn)定運(yùn)行,原生支持 OpenAPI 3 規(guī)范,并且實現(xiàn)了“零配置開箱即用”。

SpringDoc 是什么

SpringDoc 是一款專為 Spring Boot 應(yīng)用打造的 API 文檔生成工具,它會自動掃描項目中的:

  • 控制器類(@RestController
  • 請求映射(@RequestMapping@GetMapping 等)
  • OpenAPI 3 注解(@Schema@Parameter 等)

然后動態(tài)生成 JSON / YAML / HTML 格式的 API 規(guī)范文件,并集成交互式的 Swagger UI 頁面,讓開發(fā)者直接在瀏覽器中調(diào)試接口。

核心能力:

  1. 自動掃描項目 API,無需手寫文檔
  2. 支持最新 OpenAPI 3 規(guī)范
  3. 集成 Swagger UI,可直接在線調(diào)試
  4. 與 Spring Boot 3.x 完美兼容

它與 Swagger 的關(guān)系

要理解 SpringDoc 的優(yōu)勢,我們先簡單回顧 Swagger 的角色。

  • Swagger 是 OpenAPI 規(guī)范的前身,負(fù)責(zé)推動 API 描述標(biāo)準(zhǔn)化
  • Swagger UI 是它的可視化工具,用于渲染交互式文檔
  • SpringFox 曾是 Spring 生態(tài)中連接 Swagger 的橋梁,負(fù)責(zé)掃描代碼并生成 JSON 格式的 OpenAPI 文檔

在 2020 年以后,SpringFox 停止更新,并且在 Spring Boot 2.6+ / 3.x 中出現(xiàn)大量不兼容問題,比如:

  • 路徑匹配失效
  • 注解沖突
  • 配置異常復(fù)雜

于是,SpringDoc 成為了替代者:它直接基于 OpenAPI 3 實現(xiàn),無需依賴 SpringFox,并且保留了 Swagger UI 的可視化體驗。

為什么選擇 SpringDoc

選擇 SpringDoc 的理由非常直接:

  • 官方持續(xù)維護(hù):兼容 Spring Boot 最新版本
  • 配置簡單:引入依賴即可運(yùn)行
  • 原生 OpenAPI 3 支持:使用 JSR-303 注解替代 Swagger 專用注解
  • 零侵入性:不破壞原有代碼結(jié)構(gòu)
  • 性能穩(wěn)定:加載速度快,資源占用低

最小化集成步驟

引入依賴

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.5.0</version>
</dependency>

可選配置(application.yml)

springdoc:
  packages-to-scan: com.icoderoad.controller
  swagger-ui:
    enabled: true
    path: /swagger-ui/index.html
    url: /v3/api-docs
    disable-swagger-default-url: false
  api-docs:
    enabled: true
    path: /api-docs

如果不配置,SpringDoc 會自動掃描全項目的 Controller 類。

基礎(chǔ)信息配置類

package com.icoderoad.config;


import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import org.springframework.context.annotation.Configuration;


@Configuration
@OpenAPIDefinition(
    info = @Info(title = "項目 API 文檔", version = "1.0", description = "SpringBoot 項目接口文檔")
)
public class SpringDocConfig {
}

添加注解展示 API 信息

package com.icoderoad.controller;


import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;


@RestController
@RequestMapping("/main")
@Tag(name = "演示Controller", description = "演示接口")
public class MainController {


    @GetMapping("/index")
    @Operation(summary = "演示方法", description = "接口功能說明")
    public String index(@Parameter(description = "參數(shù)1", required = true) String str1) {
        return "請求成功";
    }
}

訪問地址:

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

分組配置

編程式分組

package com.icoderoad.config;


import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class SpringDocGroupConfig {


    @Bean
    public GroupedOpenApi defaultGroup() {
        return GroupedOpenApi.builder().group("默認(rèn)分組").pathsToMatch("/**").build();
    }


    @Bean
    public GroupedOpenApi productGroup() {
        return GroupedOpenApi.builder().group("商品模塊").pathsToMatch("/api/product/**").build();
    }


    @Bean
    public GroupedOpenApi userGroup() {
        return GroupedOpenApi.builder().group("用戶模塊").packagesToScan("com.icoderoad.controller.member").build();
    }
}

聲明式分組(application.yml)

springdoc:
  group-configs:
    - group: 默認(rèn)分組
      paths-to-match: "/**"
    - group: 商品模塊
      paths-to-match: "/api/product/**"
    - group: 用戶模塊
      packages-to-scan: "com.icoderoad.controller.member"

特殊場景處理

 WebMvcConfigurer 重寫資源映射

package com.icoderoad.config;


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;


import java.util.concurrent.TimeUnit;


@Configuration
public class ResourcesConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springdoc-openapi-ui/")
                .setCacheControl(org.springframework.http.CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic());
    }
}

Spring Security 放行配置

package com.icoderoad.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.*;


@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class SecurityConfig {


    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests(auth -> auth
                .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                .requestMatchers("/swagger-ui/**", "/*/api-docs/**", "/swagger-resources/**", "/webjars/**").permitAll()
                .anyRequest().authenticated()
        );
        return http.build();
    }
}

總結(jié)

過去的 Swagger + SpringFox 方案,在新版本 Spring Boot 中已經(jīng)力不從心;而 SpringDoc 作為 OpenAPI 3 的原生實現(xiàn),不僅穩(wěn)定高效,還能通過最小化配置快速上手,滿足中大型項目的 API 文檔管理需求。 如果你想在 Spring Boot 3.x + JDK17+ 環(huán)境下?lián)碛幸粋€即插即用、可擴(kuò)展的 API 文檔工具,那么 SpringDoc 將是你不容錯過的選擇。它讓文檔與代碼同步更新,讓前后端協(xié)作更加流暢,讓 API 開發(fā)更具現(xiàn)代感。

責(zé)任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2023-09-21 10:44:41

Web服務(wù)Swagger前端

2025-08-11 09:32:04

2022-02-16 08:21:11

JavaSwagger工具

2020-12-07 06:05:34

apidocyapiknife4j

2015-11-23 18:21:45

Udesk

2025-08-04 02:11:00

2025-02-12 07:13:54

Knife4jAPISpringBoot

2021-05-07 20:27:14

SpringBootSwagger3文檔

2023-10-30 16:00:06

2012-04-18 16:32:43

筆記本評測

2016-09-28 10:24:03

飛魚星

2021-01-07 07:39:07

工具接口 Swagger

2019-11-15 14:11:05

科達(dá)

2017-06-20 15:39:58

Koa2 應(yīng)用動態(tài)Swagger文檔

2021-10-15 08:27:14

Kubernetes 工具Mizu

2024-09-10 08:15:33

Asp項目API

2019-02-25 10:18:43

工具代碼測試

2024-08-28 08:42:21

API接口限流
點贊
收藏

51CTO技術(shù)棧公眾號

日韩电影免费一区| 欧美成人综合一区| 日本不卡一区二区三区四区| aaa亚洲精品| 香蕉久久夜色| 一区二区91| 在线观看日韩一区| 每日在线更新av| 亚洲一区二区成人| 青青草99啪国产免费| 2019一级黄色毛片免费看网| 日韩午夜av在线| 亚洲中文字幕久久精品无码喷水 | 97电影在线看视频| 久久综合久久综合亚洲| 欧美一区二区三区电影在线观看| 波多野结衣在线观看一区二区三区| 亚洲人成在线观看网站高清| 色成人免费网站| av影院在线播放| 欧美日韩成人精品| 日本一区二区三区在线观看| 在线观看小视频| 欧美亚洲国产一区二区三区va| 日日噜噜噜夜夜爽爽狠狠| 国产亚洲一本大道中文在线| 91小视频网站| 亚洲美女视频在线免费观看| 亚洲一区二区三区四区在线播放| 91成人国产| 成人综合色站| 亚洲精品va| 欧美不卡三区| 麻豆精品在线| 国产成人在线精品| 9国产精品视频| 久久久久久亚洲精品不卡4k岛国| 久久激情综合网| 最近免费中文字幕中文高清百度| 少妇激情av一区二区| 欧美日韩综合一区| 国产美女高潮在线| 亚洲女人被黑人巨大进入| 久久小说免费下载| 亚洲精品中文字幕在线观看| 999成人网| 国产精品露出视频| 精品制服美女丁香| 日产精品久久久久久久性色| 国产制服丝袜一区| 亚洲免费成人| 人妻熟妇乱又伦精品视频| 欧美性极品xxxx做受| 蜜桃成人av| 日本综合在线| 日韩久久在线| 一区二区在线观看av| 午夜视频在线观看韩国| 亚洲国产精品一区二区www| 色中色在线视频| 一区精品在线播放| 小泽玛利亚视频在线观看| 国产成人综合在线观看| 91亚洲精选| 国产精品精品一区二区三区午夜版| 国产精品久久久久久久久免费丝袜| 午夜精品久久久久久久男人的天堂 | 国产精品久久久久影视| 久久综合狠狠综合久久综青草| 蜜桃av噜噜一区二区三区小说| 三上悠亚av一区二区三区| 欧美一级xxx| 日韩精品一区二区三区免费观影 | 久久久国产欧美| 91久久精品一区二区二区| 亚洲第一福利在线观看| 亚洲mmav| 日本成人精品在线| 亚洲精品国产首次亮相| 亚洲精品影院| 久久久99精品免费观看不卡| 黄页网址大全在线观看| 欧美一区二区福利在线| 亚洲成人1区| 国产精品中文字幕在线观看| 久久一二三四| www.天天射.com| 在线影院国内精品| 成人精品国产| 91久久久久久久久久久久久| 国产一区二区影院| 天天槽夜夜槽| 日韩av网址在线| 亚洲免费专区| 色播亚洲婷婷| 亚洲美女视频在线| а√在线天堂官网| 欧洲成人免费视频| 日本v片在线高清不卡在线观看| 自拍偷拍一区二区三区四区| 欧美一二三四区在线| 欧美一级三级| 国产激情片在线观看| 一本到三区不卡视频| 国产欧美88| 欧美日韩一区二区三区在线视频 | 黄色电影免费在线看| 中文字幕亚洲在线| 在线播放精品| 国产九九在线观看| 亚洲国产精品美女| 88国产精品视频一区二区三区| 六月婷婷在线视频| 日韩欧美一区中文| 日本电影一区二区| 天天操天天摸天天爽| 亚洲黄色www| 亚洲国产黄色| 成人福利视频导航| 韩国19禁主播vip福利视频| 韩国三级电影一区二区| 国产1区2区3区在线| 国产99视频精品免视看7| 99免费精品视频| 超碰99在线| 国产一区不卡在线观看| 一区二区三区四区中文字幕| 96视频在线观看欧美| 在线观看免费91| 欧美日韩一级大片网址| 99re6这里只有精品| 五月天av在线播放| 久久久精品国产亚洲| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲一区二区美女| 精品视频一二| 日韩精品手机在线观看| 日韩免费观看高清完整版在线观看| 日韩在线二区| hbad中文字幕| 欧美老女人在线视频| 国产91丝袜在线观看| www欧美xxxx| 免费看污久久久| 欧美日韩国产综合一区二区三区| 色呦哟—国产精品| eeuss一区| 国产精品美女免费看| 亚洲另类在线视频| 香蕉久久夜色精品国产使用方法| 蜜臀av午夜一区二区三区| 久久精品国产欧美激情| 99精品欧美一区| 亚洲狼人综合| 成人一级片网站| 久久91超碰青草是什么| 久久综合狠狠综合| 美国十次综合久久| 成人免费在线观看视频网站| 欧美国产日韩一区二区在线观看| 久久久午夜精品| 欧美日韩不卡| 青草视频在线观看视频| 综合国产在线观看| 91在线码无精品| 99re8这里有精品热视频8在线| 日韩av一二三四| 欧美激情2020午夜免费观看| 久久色在线视频| 蜜桃一区二区三区| 日韩一二三四| 欧美一区视久久| 亚洲欧美国产va在线影院| aaa国产一区| 国产美女撒尿一区二区| 国产福利电影网| 97免费高清电视剧观看| 91精品国产综合久久婷婷香蕉| 久久欧美肥婆一二区| www.成人爱| 91日韩视频在线观看| 国产精品久久久久久久电影 | 欧美一级二级视频| 日韩有码免费视频| 国产精品日韩在线观看| 欧美色综合网站| 韩国欧美一区二区| 欧美电影院免费观看| 中文资源在线网| 日本视频一区在线观看| 亚洲天堂免费观看| 亚洲视频一区在线| 伊人成人网在线看| 经典三级一区二区| 在线视频国产日韩| 国产精品久久久久四虎| 久久久久av| 毛片无码国产| 日本免费看黄色| 欧美三日本三级少妇三99|