springbootapi文档(springboot整合swagger2+knife4j)

本文目录
springboot整合swagger2+knife4j
前言:前面文件已经发过swagger2的整合教程 SpringBoot整合swagger ,本文主要是介绍knife4j。
Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!
二、加入配置类
三、配置文件
四、扩展
***隐藏网址***
***隐藏网址***
***隐藏网址***
springboot,springmvc整合swagger
1.Springboot整合Swagger2
1.1.pom加swagger依赖
《dependency》
《groupId》io.springfox《/groupId》
《artifactId》springfox-swagger2《/artifactId》
《version》2.9.2《/version》
《/dependency》
《!-- 《dependency》
io.springfox
springfox-swagger-ui
2.9.2
--》
《dependency》
《groupId》com.github.xiaoymin《/groupId》
《artifactId》swagger-bootstrap-ui《/artifactId》
《version》1.9.0《/version》
《/dependency》
《dependency》
《groupId》io.swagger.core.v3《/groupId》
《artifactId》swagger-annotations《/artifactId》
《version》2.0.8《/version》
《/dependency》
《dependency》
《groupId》io.swagger.core.v3《/groupId》
《artifactId》swagger-models《/artifactId》
《version》2.0.8《/version》
《/dependency》
1.2.添加swagger配置类
@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUI
//@ConditionalOnExpression("${swagger.enable:true}")
public class Swagger2 {
// @Override
// public voidaddResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
// registry.addResourceHandler("/webjars*").addResourceLocations("classpath:/META-INF/resources/webjars/");
// }
@Value("${swagger.enable:true}")
private String enable;
@Value("${swagger.basePackage}")
private String basePackage;
@Bean
public Docket createRestApi()
{
Predicateselector= PathSelectors. none ();
if ("true".equals(enable)) {
selector=PathSelectors. any ();
}
//定义全局参数
Listpars = new ArrayList《》();
ParameterBuildertoken = new ParameterBuilder();
token.name("token").description("token").modelRef( new ModelRef("string")).parameterType("header").required( false ).build();
pars.add(token.build());
return new Docket(DocumentationType. SWAGGER_2 )
.globalOperationParameters(pars) // 全局参数
.groupName("demo01")//指定分组
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors. basePackage (basePackage))
// .paths(PathSelectors.any())
.paths(selector)
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SpringBoot测试使用 Swagger2 构建RESTful API")
.description("springboot demo 接口文档")
.version("1.0")
.build();
}
}
1.3.加上swagger启用禁用开关
新建application.properties文件
#swagger启用禁用标识true:启用
swagger.enable=true
#swagger扫描需生成文档的包路径
swagger.basePackage=com.tjc.springbootDemo.controller
1.4.Swagger具体注释用法
***隐藏网址***
1.5本地访问swagger文档
***隐藏网址***
***隐藏网址***
***隐藏网址***
1.6.在线访问swagger接口
***隐藏网址***
1.7.demo源码访问地址
***隐藏网址***
2.Springmvc整合Swagger2
2.1.pom加依赖
《!-- swagger --》
《dependency》
《groupId》com.fasterxml.jackson.core《/groupId》
《artifactId》jackson-annotations《/artifactId》
《version》2.9.9《/version》
《/dependency》
《dependency》
《groupId》com.fasterxml.jackson.core《/groupId》
《artifactId》jackson-core《/artifactId》
《version》2.9.9《/version》
《/dependency》
《dependency》
《groupId》com.fasterxml.jackson.core《/groupId》
《artifactId》jackson-databind《/artifactId》
《version》2.9.9《/version》
《/dependency》
《dependency》
《groupId》io.springfox《/groupId》
《artifactId》springfox-swagger2《/artifactId》
《version》2.9.2《/version》
《/dependency》
《!-- 《dependency》
io.springfox
springfox-swagger-ui
2.7.0
--》
《dependency》
《groupId》com.github.xiaoymin《/groupId》
《artifactId》swagger-bootstrap-ui《/artifactId》
《version》1.9.0《/version》
《/dependency》
《dependency》
《groupId》io.swagger.core.v3《/groupId》
《artifactId》swagger-annotations《/artifactId》
《version》2.0.8《/version》
《/dependency》
《dependency》
《groupId》io.swagger.core.v3《/groupId》
《artifactId》swagger-models《/artifactId》
《version》2.0.8《/version》
2.2.添加swagger配置类
@Configuration
@EnableSwagger2
@EnableWebMvc
@EnableSwaggerBootstrapUI
@PropertySource(value="classpath:swagger.properties")
public class Swagger2 {
@Value("${swagger.enable:true}")
private String enable;
@Value("${swagger.basePackage}")
private String basePackage;
@Bean
public Docket createRestApi()
{
Predicateselector= PathSelectors. none ();
//启用swagger
if ("true".equals(enable)) {
selector=PathSelectors. any ();
}
// //定义全局参数
// List pars = new ArrayList();
// ParameterBuilder token = newParameterBuilder();
// token.name("token").description("token").modelRef(newModelRef("string")).parameterType("header").required(false).build();
// pars.add(token.build());
return new Docket(DocumentationType. SWAGGER_2 )
// .globalOperationParameters(pars)//全局参数
.groupName("demo01")//指定分组
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors. basePackage (basePackage))
// .paths(PathSelectors.any())
.paths(selector)
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SpringMvc测试使用 Swagger2 构建RESTful API")
.description("springmvc demo 接口文档")
.version("1.0")
.build();
}
}
2.3. 创建swagger.properties文件
#swagger启用禁用标识true:启用
swagger.enable=true
#swagger扫描需生成文档的包路径
swagger.basePackage=com.tjc.springmvcDemo.controller
2.4.springmvc初始化文件添加扫包配置
《!-- 开启springmvc注解 --》
《mvc:annotation-driven/》
《mvc:default-servlet-handler/》
《context:component-scanbase-package= "com.tjc.springmvcDemo.controller" /》
《!-- 添加配置文件 --》
《context:property-placeholderlocation= "classpath:swagger.properties" /》
《context:component-scanbase-package= "com.tjc.springmvcDemo.config.swagger" /》
2.5.Swagger具体注释用法
***隐藏网址***
2.6.在线访问swagger接口
***隐藏网址***
2.7.demo源码访问地址
***隐藏网址***
3.问题整理
3.1.项目中拦截器,过滤器拦截了swagger路径
解决方案:剔除/swagger-resources,/webjars/,/v2/,/doc.html/等路径
.excludePathPatterns("/swagger-resources/**","/webjars/**","/v2/**","/doc.html/**");
3.2. guava-${version}.jar包冲突
解决方案:在maven仓库查找最新guava jar包;
3.3.分布式聚合文档结合eureka注册中心发现服务,zuul解决浏览器跨域,通过调用swagger的/v2/doc-api接口获取文档json数据实现文档聚合管理

更多文章:
linux命令大全中的chown(chown在linux下是什么命令)
2025年10月21日 11:00
宝宝起名用什么颜色比较好呀?用赵清澄给宝宝起名好不好女孩子用颜色起名有哪些
2025年7月21日 13:15
帕罗西汀吃了6天实在受不了(第一天吃帕罗西汀有点难受,可以停吗)
2025年8月3日 17:00
批处理命令关闭密码保护共享(怎样写批处理文件关闭系统的默认共享)
2026年9月7日 23:45
汉字二进制编码表(汉字国标码规定了一级汉字和二级汉字各多少个)
2025年10月12日 00:30
swing帮助文档(eclipse里怎么查看jdk的帮助文档)
2025年6月27日 01:15
cadence 步频(在跑步过程中,如何利用好步幅和步频之间的平衡点)
2026年2月8日 00:30
textarea显示全部内容(在textarea中输入内容并显示内容(html等也当字符显示))
2026年3月17日 22:45
下拉列表用什么标签(下拉菜单必须用button标签,不可以用a标签)
2026年5月23日 17:45
getchar()的功能和gets(C语言中单独一行getchar()然后下一行gets是什么用法求解)
2026年3月1日 08:45














