🚨 特别注意
-
增加注解
@EnableOpenApi
而不要使用注解@EnableSwagger2 -
启动项目,访问地址:
http://localhost:8080/swagger-ui/index.html
,(注意swagger2.x版本中访问的地址的为http://localhost:8080/swagger-ui.html) -
如果配置了Spring Security 则需要
配置白名单策略
以及token策略
整合
🎞 流程概述
- pom.xml 导入 jar包
- SwaggerConfig.java
- SecurityConfig.java [可选]
- 访问地址
- 配置token [可选]
1. pom.xml 导入 jar包
📦 pom.xml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
2. SwaggerConfig.java
🔧 SwaggerConfig.java
@Configuration
@EnableOpenApi
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
//为当前包下controller生成API文档
.apis(RequestHandlerSelectors.basePackage("cn.dearth.controller"))
//为有@Api注解的Controller生成API文档
// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//为有@ApiOperation注解的方法生成API文档
// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SwaggerUI演示")
.description("test")
.version("1.0.0")
.build();
}
}
3. SecurityConfig.java [可选]
🍫 SecurityConfig.java
项目中加了Spring Security的可以参照以下配置
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//**************** begin *****************//
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/swagger**/**")//
.antMatchers("/webjars/**")//
.antMatchers("/v3/**")//
.antMatchers("/doc.html");
}
//**************** end *****************//
}
4. 访问地址
http://localhost:8080/swagger-ui/index.html
5. 配置token
@Configuration
@EnableOpenApi
public class SwaggerConfig {
@Bean
public Docket docket() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo()).enable(true)
.securityContexts(Collections.singletonList(securityContext()))
.securitySchemes(Collections.singletonList(apiKey()))
.select()
.apis(RequestHandlerSelectors.basePackage("cn.dearth.vex.controller"))
.paths(PathSelectors.any())
.build();
}
//********************************** begin ************************************************
private SecurityContext securityContext() {
return SecurityContext.builder().securityReferences(defaultAuth()).build();
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Collections.singletonList(new SecurityReference("Authorization", authorizationScopes));
}
private ApiKey apiKey() {
return new ApiKey("Authorization", "Authorization", "header");
}
//********************************** end ************************************************
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SwaggerUI演示")
.description("test")
.version("1.0.0")
.build();
}
}