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

swagger整合gateway實現(xiàn)文檔集中化過程

 更新時間:2026年02月06日 14:59:09   作者:哀愁  
本文介紹了如何將Swagger與Spring?Cloud?Gateway整合,實現(xiàn)API文檔的集中化管理,通過Spring?Boot的自動裝配,配置了網(wǎng)關(guān)Swagger資源提供程序,實現(xiàn)了通過gateway路由的方式聚合Swagger文檔,整個過程包括了文件夾結(jié)構(gòu)、自動裝配文件內(nèi)容等詳細(xì)步驟

swagger整合gateway文檔集中化

swagger的公用配置

@ConfigurationProperties("my.swagger")
@Getter
@Setter
public class SwaggerProperties {
    /**
     * swagger2默認(rèn)的url后綴
     */
    private String swagger2Url = "/v2/api-docs";

    private String oas30Url = "/v3/api-docs";

    private String swaggerVersion = "2.0";


    /**
     * 自動生成文檔的路由名稱,設(shè)置了generateRoutes之后,ignoreRoutes不生效
     */
    private Set<String> generateRoutes = new HashSet<>();

    /**
     * 不自動生成文檔的路由名稱,設(shè)置了generateRoutes之后,本配置不生效
     */
    private Set<String> ignoreRoutes = new HashSet<>();

    /**
     * 是否顯示該路由
     */
    public boolean isShow(String route) {
        int generateRoutesSize = generateRoutes.size();
        int ignoreRoutesSize = ignoreRoutes.size();

        if (generateRoutesSize > 0 && !generateRoutes.contains(route)) {
            return false;
        }

        if (ignoreRoutesSize > 0 && ignoreRoutes.contains(route)) {
            return false;
        }

        return true;
    }


}

網(wǎng)關(guān) Swagger 資源提供程序gateway 路由的方式聚合swagger文檔

@EnableConfigurationProperties(SwaggerProperties.class)
@Primary
public class GatewaySwaggerResourceProvider implements SwaggerResourcesProvider {
    @Resource
    private SwaggerProperties swaggerProperties;
    private final RouteLocator routeLocator;
    private final GatewayProperties gatewayProperties;

    @Autowired
    public GatewaySwaggerResourceProvider(RouteLocator routeLocator, GatewayProperties gatewayProperties) {
        this.routeLocator = routeLocator;
        this.gatewayProperties = gatewayProperties;
    }

    /**
     * 獲取所有的swagger資源配置
     *
     * @return
     */
    @Override
    public List<SwaggerResource> get() {
        List<SwaggerResource> resources = new ArrayList<>();
        Set<String> routes = new HashSet<>();
        //取出Spring Cloud Gateway中的route
        routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));
        //結(jié)合application.yml中的路由配置,只獲取有效的route節(jié)點
        gatewayProperties.getRoutes().stream().filter(
                routeDefinition -> (
                        routes.contains(routeDefinition.getId()) && swaggerProperties.isShow(routeDefinition.getId())
                )
        ).forEach(routeDefinition -> routeDefinition.getPredicates().stream()
                .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName()))
                .forEach(predicateDefinition -> resources.add(
                        swaggerResource(
                                routeDefinition.getId(),
                                predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", swaggerProperties.getSwagger2Url())
                        )
                        )
                )
        );
        return resources;


    }

    private SwaggerResource swaggerResource(String name, String location) {
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(location);
        swaggerResource.setSwaggerVersion(swaggerProperties.getSwaggerVersion());
        return swaggerResource;
    }
}

這里使用的SpringBoot的自動裝配

文件夾的結(jié)構(gòu)為

文件內(nèi)的內(nèi)容為

Auto Configure

org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.mn.swagger.SwaggerProperties,
com.mn.swagger.GatewaySwaggerResourceProvider

總結(jié)

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

相關(guān)文章

  • 使用SpringJPA?直接實現(xiàn)count(*)

    使用SpringJPA?直接實現(xiàn)count(*)

    這篇文章主要介紹了SpringJPA?直接實現(xiàn)count(*),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java按時間梯度實現(xiàn)異步回調(diào)接口的方法

    Java按時間梯度實現(xiàn)異步回調(diào)接口的方法

    這篇文章主要介紹了Java按時間梯度實現(xiàn)異步回調(diào)接口,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • Java中ZIP文件中文亂碼問題的解決指南

    Java中ZIP文件中文亂碼問題的解決指南

    文章介紹Java文件壓縮解壓中處理中文亂碼的解決方案,包括指定UTF-8編碼、使用緩沖流及Ant工具配置,確保文件名和內(nèi)容正確顯示,避免因字符集不一致導(dǎo)致的亂碼問題,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • java多線程中的生產(chǎn)者和消費者隊列詳解

    java多線程中的生產(chǎn)者和消費者隊列詳解

    這篇文章主要介紹了java多線程中的生產(chǎn)者和消費者隊列詳解,隊列,是一種數(shù)據(jù)結(jié)構(gòu),除了優(yōu)先級隊列和LIFO隊列外,隊列都是以FIFO(先進先出)的方式對各個元素進行排序的,需要的朋友可以參考下
    2024-01-01
  • MybatisPlus插件自動維護更新和創(chuàng)建時間方式

    MybatisPlus插件自動維護更新和創(chuàng)建時間方式

    這篇文章主要介紹了MybatisPlus插件自動維護更新和創(chuàng)建時間方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • java抓取網(wǎng)頁或文件中的郵箱號碼

    java抓取網(wǎng)頁或文件中的郵箱號碼

    這篇文章主要為大家詳細(xì)介紹了java如何抓取網(wǎng)頁或文件中的郵箱號碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • SpringBoot項目集成第三方CAS-client jar包的方法

    SpringBoot項目集成第三方CAS-client jar包的方法

    本文介紹了SpringBoot中集成第三方CAS-clientjar包的兩種核心方式,涵蓋了從背景原理到實操步驟、依賴沖突解決、打包配置及常見問題排查的全面內(nèi)容,通過對比兩種集成方式,提出了選型建議,并強調(diào)了依賴管理的規(guī)范性,為實際項目開發(fā)提供了全面指導(dǎo),感興趣的朋友一起看看吧
    2025-12-12
  • java中實體類和JSON對象之間相互轉(zhuǎn)化

    java中實體類和JSON對象之間相互轉(zhuǎn)化

    Java中關(guān)于Json格式轉(zhuǎn)化Object,Map,Collection類型和String類型之間的轉(zhuǎn)化在我們實際項目中應(yīng)用的很是普遍和廣泛。最近工作的過程中也是經(jīng)常有,因此,自己封裝了一個類分享給大家。
    2015-05-05
  • Java中的內(nèi)部類你了解嗎

    Java中的內(nèi)部類你了解嗎

    這篇文章主要為大家介紹了Java的內(nèi)部類,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java Synchronized鎖失敗案例及解決方案

    Java Synchronized鎖失敗案例及解決方案

    這篇文章主要介紹了Java Synchronized鎖失敗案例及解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論

天门市| 华宁县| 丁青县| 桑日县| 天祝| 丹阳市| 田阳县| 台南县| 淮南市| 桦川县| 阿克| 定结县| 荣昌县| 高雄市| 高碑店市| 绥江县| 固始县| 贵港市| 长宁县| 金堂县| 鄢陵县| 太仆寺旗| 峨山| 花莲县| 建湖县| 望城县| 赫章县| 丽水市| 积石山| 思南县| 盐亭县| 阿荣旗| 通化市| 积石山| 开远市| 独山县| 澄迈县| 西华县| 长宁区| 阿克陶县| 中西区|