在项目结构中,我将SwaggerConfig文件写在common模块,其他模块通过pom引入这个模块,swagger的版本如下:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
但是启动项目使出现如下错误:
The following method did not exist: springfox.documentation.builders.RequestHandlerSelectors.any()Lcom/google/common/base/Predicate;
在上网搜查和对比别人的代码后,经验证以下的方案有效:
将依赖改为:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
配置文件改为:
@Configuration
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
// 添加请求参数,token请求头部参数传入后端
// ParameterBuilder parameterBuilder = new ParameterBuilder();
// List<Parameter> parameters = new ArrayList<Parameter>();
// parameterBuilder.name("token").description("token")
// .modelRef(new ModelRef("string")).parameterType("header").required(false).build();
// parameters.add(parameterBuilder.build());
// return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
// .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
// .build().globalOperationParameters(parameters);
// 不加参数
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("系统 API 文档")
.description("This is a restful api document of smart watter.")
.version("1.0")
.build();
}
}
最后要注意这个依赖包的swagger网页路径发生了变化:
http://localhost:8095/swagger-ui/index.html