Swagger2 + Spring REST API无法正常工作

时间:2015-12-20 23:37:28

标签: java spring swagger-2.0 springfox

我有一个Spring Rest控制器及其NOT spring启动应用程序。它只是一个REST API项目。我想在我的项目中集成swagger2。我尝试了Net和演示中的所有示例,但没有运气。当我尝试执行http://localhost:8085/context/swagger-ui.html时,我收到404错误。请在下面找到我的问候,如果有任何差异请告诉我。任何帮助都非常感谢。

  

jars - 在/ WEB-INF / lib下

     

谷歌的集合-1.0.jar   springfox核-2.2.2.jar   springfox-架构2.2.2.jar   springfox-SPI-2.2.2.jar   springfox弹簧的web-2.2.2.jar   springfox-staticdocs-2.2.2.jar   springfox-招摇,共2.2.2.jar   springfox-招摇-UI-2.2.2.jar   springfox-swagger2-2.2.2.jar

我的招摇配置类 -

@EnableSwagger2
public class SwaggerConfiguration {

}

我的springconfig类

@EnableWebMvc
@ComponentScan(basePackageClasses = controller.class)
@Import(SwaggerConfiguration.class)
public class SpringConfiguration 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/");
}
}

我的应用程序初始化程序类,根据springfox-java演示。我尝试使用和不使用以下类,并且无论如何都无法正常工作。

Application Initializer class

public class ApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class[]{controller.class};
}

@Override
protected String[] getServletMappings() {
    return new String[]{"/*"};
}
}

我可以在相同的上下文中访问我的其他网址但不能访问swagger-ui.html。

请让我知道我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

我添加了手动选择的控制器:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("my.package.to.api"))
                .paths(regex("/product.*")) //optional 
                .build();

    }
}

答案 1 :(得分:0)

给出的详细信息不足以重现/分析问题。

但是,今天我遇到了类似的问题,当然使用了SpringBoot,并解决了自己,如下所示: 因为我的示例有一个控制器类和一个具有main方法的应用程序类,所以我创建了如下的包,它得到了解决:

  • 你好
    • 控制器
      • HelloController中
    • 招摇
      • SwaggerConfig2
    • HelloApplication