Java系列-整合swagger-bootstrap-ui文档
2025年9月13日大约 2 分钟
Java系列-整合swagger-bootstrap-ui文档
准备工作
正式开始
POM
<!-- swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
配置基类
- Swagger2Configuration.java
package com.xxx.oa.framework.config;
import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
*
* <p> Description: Swagger2 生产环境禁用
*
* @author him
* @version 1.0.0
* @since 2020-11-13 10:41:21
*/
@Profile("dev")
@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUI
public class Swagger2Configuration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
/** API备注信息 */
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xxx-oa接口文档")
.description("更多请咨询服务开发商")
.contact(new Contact("yunkuerp", "https://www.yunkuerp.cn", "xxx@sun-usb.com"))
.version("1.0.0")
.build();
}
}
使用教程
- 额外增加注解: @ApiOperationSupport(order = 1):作用在方法上的排序;@ApiSort(1):作用在类上的排序
文档访问



额外补充
Swagger2 中添加 JWT
在Swagger2
中我们声明DocketBean
时利用全局参数注入一个Authorization
请求头:
package com.xxx.oa.framework.config;
import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
*
* <p> Description: Swagger2 生产环境禁用
*
* @author him
* @version 1.0.0
* @since 2020-11-13 10:41:21
*/
@Profile("dev")
@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUI
public class Swagger2Configuration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.globalOperationParameters(jwtToken())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xxx-oa接口文档")
.description("更多请咨询服务开发商")
.contact(new Contact("yunkuerp", "https://www.yunkuerp.cn", "xxx@sun-usb.com"))
.version("1.0.0")
.build();
}
private List<Parameter> jwtToken() {
String jwt = "Bearer {jwt}";
ParameterBuilder tokenPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<>();
// 声明 key
tokenPar.name("Authorization")
// 文字说明
.description("jwt令牌")
// 类型为字符串
.modelRef(new ModelRef("string"))
// 参数形式为 header 参数
.parameterType("header")
// 默认值
.defaultValue(jwt)
// 是否必须
.required(false);
pars.add(tokenPar.build());
return pars;
}
}
效果如下,只需要填充一个可用的Jwt Token
即可。

Swagger3 中添加 JWT
Swagger3
同样也是在声明DocketBean
中注入,如下:
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.securitySchemes(Collections.singletonList(HttpAuthenticationScheme.JWT_BEARER_BUILDER
// 显示用
.name("JWT")
.build()))
.securityContexts(Collections.singletonList(SecurityContext.builder()
.securityReferences(Collections.singletonList(SecurityReference.builder()
.scopes(new AuthorizationScope[0])
.reference("JWT")
.build()))
// 声明作用域
.operationSelector(o -> o.requestMappingPattern().matches("/.*"))
.build()))
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
通过Swagger3
中Docket
提供的securitySchemes
和securityReferences
方法进行 JWT 的配置。
总结
Swagger3中设置JWT比Swagger2中要麻烦一些,能够简化我们的使用和开发使用即可。