背景
我遇到了一些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
答案 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