Springdoc 不工作 WebMvcConfigurationSupport

问题描述 投票:0回答:1

我正在处理旧的遗留项目,其中使用 WebMvcConfigurationSupport 配置了 spring boot,现在需要使用 spring doc 设置 swagger ui。不幸的是,当 @EnableWebMvc 被禁用时,它无法正常工作。

当我有这个

registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/4.17.1/").resourceChain(false);

带宠物店的默认用户界面已加载。

使用 @EnableWebMvc 它可以工作,但核心应用程序功能被破坏,因为所有验证器和前端都不起作用。所以我不能用它。

通过调试,我看到没有调用 SwaggerIndexPageTransformer。

我该怎么办?

java spring spring-boot spring-mvc springdoc-openapi-ui
1个回答
0
投票

我有同样的问题。当我尝试调试 springdoc 代码时,我找到了一个解决方案。我注意到有类

SwaggerWebMvcConfigurer
有方法
addResourceHandler()
。因为我们已经使用了
WebMvcConfigurationSupport
在我看来这个方法没有被触发(例如
DelegatingWebMvcConfiguration
以某种方式委托类层次结构中的 addResourceHandlers 上层,我不确定)。

所以,这是我的代码帮助:

private final SwaggerIndexTransformer swaggerIndexTransformer;

    public CloudServletConfig(SwaggerIndexTransformer swaggerIndexTransformer) {
        this.swaggerIndexTransformer = swaggerIndexTransformer;
    }

@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        super.addResourceHandlers(registry);
        registry.addResourceHandler("/swagger-ui*/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/")
                .resourceChain(false)
                .addTransformer(swaggerIndexTransformer);
    }

我,只是做着和

SwaggerWebMvcConfigurer
一样的事。我也这么认为:D

我只注意到一个问题。如果我首先点击

swagger-ui/index.html
url,则不会生成 api 定义: no api definition

但是如果我一开始点击

/v3/api-docs
,就会生成api定义然后我就可以浏览了
swagger-ui/index.html

© www.soinside.com 2019 - 2024. All rights reserved.