简体   繁体   English

Swagger和Spring MVC集成

[英]Swagger and Spring MVC integration

when integrate swagger with mvc and use java-based configuration like 当将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/");
    }
}

and use url http://localhost:8080/admin-api/admin/swagger-ui.html it give 404. when i remove addResourceHandlers from SwaggerConfig configuration class and configure through xml like 并使用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/" />

with the same url http://localhost:8080/admin-api/admin/swagger-ui.html it run without problems. 使用相同的网址http://localhost:8080/admin-api/admin/swagger-ui.html可以正常运行。 how can i use java-based configuration? 如何使用基于Java的配置?

In swagger - java based configuration a class exteds from WebMvcConfigurerAdapter, in that class file by override addResourceHandlers like below 在基于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);
   }
}

Try flagging your SwaggerConfig with @EnableWebMvc and register "**/**" as another ResourceHandler, as follows: 试试你的标记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/");
}

Also have a look at Docket , here is the link for the sample application using Docket API- swagger-example . 还可以看看Docket ,这是使用Docket API- swagger-example的示例应用程序的链接。

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

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