如何导入Swagger配置

时间:2017-10-04 17:20:24

标签: java swagger

背景

我遇到了一些Swagger配置问题,所以我试图通过复制一些简单的示例配置来修复它们。

我正在阅读本教程: http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api

他们有这个:

@Configuration
@EnableSwagger2
public class SwaggerConfig {                                    
    @Bean
    public Docket api() { 
        return new Docket(DocumentationType.SWAGGER_2)  
          .select()                                  
          .apis(RequestHandlerSelectors.any())              
          .paths(PathSelectors.any())                          
          .build();                                           
    }
}

设置

我曾经在我的public class Application中拥有这个bean Docket但是它们似乎在自己的类中有配置。我想匹配他们的设置,所以我在与Application.java相同的位置创建了一个SwaggerConfiguration.java文件。

然后我让SwaggerConfiguration.java包含以下代码:

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

    @Bean
    public Docket Api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .pathMapping("/")
                .apiInfo(apiInfo());
    }


    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("Service API")
            .build();
    }
}

我的Application.Java包含以下代码:

@SpringBootApplication
@EnableTransactionManagement
@EnableSwagger2
@ComponentScan({"myproject.request"})
public class Application {

    public static void main(String[] args) {
        new SpringApplication(Application.class).run(args);
    }

}

问题:如何将此SwaggerConfiguration.java绑定到我的项目中? (导入它)

他们在这里做到了我相信:"通过在现有的rest-dispatcher-servlet.xml"的component-scan标签中添加包名称(如果它缺少)来导入bean。 - http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api

但是,我没有那个serverlet,也没有除了maven的pom.xml之外的任何xml文件。

问题改述

我的SwaggerConfig.java只是坐在我的项目中,但没有被任何东西使用或导入。例如,apiInfo并未在Swagger UI上设置任何内容。我该如何使用它。

更新1

有人建议删除@ComponentScan({"myproject.request"}),但是当我的构建失败并打印出来时:

Description:

Field actionRepository in myproject.service.ActionServiceImpl required a bean of type 'myproject.repository.ActionRepository' that could not be found.


Action:

Consider defining a bean of type 'myproject.repository.ActionRepository' in your configuration.

更新2

我已将SwaggerConfiguration更改为SwaggerConfig

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    /*
    @Bean
    public Docket Api() {
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.basePackage("myproject.controller")).paths(regex("/api/*"))
                .build().apiInfo(apiInfo());

    }
    */
    @Bean
    public Docket Api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("ibm.controller"))
                .paths(regex("/api/*"))
                .build()
                .pathMapping("/")
                .apiInfo(apiInfo());
    }


    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("Service API")
            .description("API for Service REST operations")
    }
}

但我有同样的问题

更新3个背景

此问题与此问题有点紧密相关Swagger no longer finds API controllers

1 个答案:

答案 0 :(得分:2)

package com.vk.test.swagger;

import static springfox.documentation.builders.PathSelectors.regex;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2

/**
 * 
 * @author vaquar khan
 *
 */
public class SwaggerConfiguration {
    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.basePackage("com.vk.test.controller")).paths(regex("/api/apiPath.*"))
                .build();

    }

}

的Maven

     <!-- Swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
            <scope>compile</scope>
        </dependency>
        <!-- Swagger UI -->

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
            <scope>compile</scope>
        </dependency>

调用招摇

http://<servername>:<Port>/swagger-ui.html