繁体   English   中英

Swagger和Spring MVC集成

[英]Swagger and Spring MVC integration

当将swagger与mvc集成并使用基于Java的配置时

@Configuration
@EnableSwagger2
@PropertySource("classpath:application.properties")
public class SwaggerConfig extends WebMvcConfigurerAdapter {
    .
    .
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

并使用url http://localhost:8080/admin-api/admin/swagger-ui.html它给出404。当我从SwaggerConfig配置类中删除addResourceHandlers并通过xml进行配置时

<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" />
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/" />

使用相同的网址http://localhost:8080/admin-api/admin/swagger-ui.html可以正常运行。 如何使用基于Java的配置?

在基于Java的配置中,一个类从WebMvcConfigurerAdapter退出,在该类文件中通过重写addResourceHandlers如下所示

@Configuration
public class AppConfig extends WebMvcConfigurerAdapter {
   @Override
   public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    super.addResourceHandlers(registry);
   }
}

试试你的标记SwaggerConfig@EnableWebMvc并注册"**/**"作为另一个ResourceHandler,具体如下:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("**/**").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}

还可以看看Docket ,这是使用Docket API- swagger-example的示例应用程序的链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM