SpringBoot 整合 Swagger2 + Knife4j
文章目录
- 写在最前面
- 代码
- 1. 准备项目
- 2. 配置类
- 3. 控制器类(进行测试)
- 4. 启动器
- 网页查看效果
写在最前面
SpringBoot 项目,一般会提供一大堆的 Controller 来供人使用,很多时候,我们会用 Swagger来写代码文档,可以在页面上来调试,查看我们提供的那些控制器。
代码
1. 准备项目
新建一个SpringBoot 项目。
我这里使用的是 2.5.7版本。
pom.xml 文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.7</version><relativePath/></parent><groupId>com.example</groupId><artifactId>boot-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>boot-demo</name><description>Demo project for Spring Boot</description><properties><java.version>11</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--配合Swagger2 形成一个knife4j页面 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.4</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><inherited>true</inherited><configuration><source>11</source><target>11</target><parameters>true</parameters></configuration></plugin></plugins></build>
</project>
2. 配置类
package com.example.config;import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.annotations.ApiOperation;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
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;/*** Swagger2 配置 + knife4j美化** @version V1.0* @author: fengjinsong* @date: 2022年02月18日 15时20分*/
@EnableKnife4j
@Configuration
@EnableSwagger2
@Import(BeanValidatorPluginsConfiguration.class)
@ConditionalOnProperty(value = {"knife4j.enable"}, matchIfMissing = true)
public class Swagger2Config {@Beanpublic Docket customDocket() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();}// 构建 api文档的详细信息函数private ApiInfo apiInfo() {return new ApiInfoBuilder().title("测试").version("1.0.0").description("系统API描述").contact(new Contact("创建人姓名","http://XXX","")).build();}
}
3. 控制器类(进行测试)
package com.example.controller;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;/*** Swagger 测试** @version V1.0* @author: fengjinsong* @date: 2022年02月18日 15时25分*/
@Api(tags = "测试控制器")
@RestController("/t1")
public class TestController {@ApiOperation(value = "测试控制器-测试方法", notes = "暂无描述")@GetMapping("/test")public Map<String, Object> test(@ApiParam(value = "前缀") @RequestParam(name = "prefix") String prefix){return Map.of(prefix + "-test()", ThreadLocalRandom.current().nextInt(1000));}
}
4. 启动器
package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;/*** 启动器*/
@EnableSwagger2
@SpringBootApplication
public class BootDemoApplication {public static void main(String[] args) {SpringApplication.run(BootDemoApplication.class, args);}
}
网页查看效果
访问:http://localhost:8080/doc.html
SpringBoot 整合 Swagger2 + Knife4j相关推荐
- SpringBoot学习笔记(16)----SpringBoot整合Swagger2
Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...
- 业务规范之springboot整合swagger2
业务规范(整合swagger2) ###业务规范之springboot整合swagger2 ###业务规范之统一验证 ###业务规范之统一返回体 ###业务规范之统一异常处理和统一响应 二.整合swa ...
- springboot整合 swagger2
springboot整合 swagger2 引入依赖 <!-- swagger --><dependency><groupId>io.springfox</g ...
- SpringBoot整合Swagger2教程
SpringBoot整合Swagger2教程 环境说明 springboot 版本 2.4.4 swagger2 版本 2.9.2 工程准备 创建Springboot工程.这一步不会的可先去Hello ...
- springboot整合swagger+knife4j
springboot整合swagger+knife4j 参考网址: https://mp.weixin.qq.com/s/KlYj5JuJSJYQQ47mQu7b1w swagger配置参考文档 sw ...
- Swagger的安装以及SpringBoot整合Swagger2实现SwaggerAPI文档测试
前言 本篇博客是本人在网上学习Swagger所产出的个人笔记.主要内容有: 1.Swagger的安装 2.Swagger的介绍 3.Swagger2中常用的注解 4.快速上手案例 准备工作:Swagg ...
- SpringBoot整合Swagger2
整合Swagger2 1.Swagger介绍 前后端分离开发模式中,api文档是最好的沟通方式. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web ...
- springboot 整合 swagger2 配置账号密码登录 demo代码
配置spring security登录可参考: springboot整合spring security安全框架-简单验证账号密码 一.pom文件引入swagger依赖 <!-- swagger2 ...
- SpringBoot整合Swagger2实现接口文档
展示一下 访问方式一 访问地址:http://localhost:8080/swagger-ui.html#/ 首页 详情页 访问方式二 访问地址:http://localhost:8080/doc. ...
最新文章
- AfxOleInit()和::CoInitialize(NULL)区别
- 学python可以干嘛-学 Python 都用来干嘛的?
- Windows server 2003 体系结构
- SQL Server T-SQL编程:数据库用户与安全设置
- (找规律)Magic of David Copperfield
- 第二次小组实践作业小组每日进度汇报:2017-11-29
- C#的变迁史 - C# 4.0 之线程安全集合篇
- JS内置对象练习(慕课网题目)
- 工厂如何引入ERP生产管理系统
- 三菱触摸屏(GS2110)触摸屏经宇电AI-mobdus485通讯转换器与2个宇电70482D7多路温度模块直接通讯实例
- 移动应用专项测试的思路和方法
- C++:剑指Offer精讲1.整数除法
- java修饰词严格程度_Java修饰词的总结
- 优秀Android开发源码合集(附解析)程序员进阶宝典
- u盘电视测试软件,智能电视无法识别U盘里的APK文件?当贝市场教你搞定
- Python的电子邮件操作
- 2022刘润年度演讲:进化的力量关键词
- Linux文件上传下载,rz和sz
- 2021年全球区块链产业重要投资和发展领域
- 【主观感受】无处不在的广告和垃圾软件,“百度一下,你就上当了”
热门文章
- 你知道哪些常用快捷键?电脑快捷键大全,打工人必备!
- [译] 充分利用多摄像头 API,写的太详细了
- 用计算机能开通余利宝吗,余利宝在哪里打开 普通用户怎么开通余利宝?
- 防静电手环在计算机中的功能,什么是防静电手环
- Using default tag: latest The push refers to repository
- 软文类型|软文按营销目的可划分为这几类
- 亚马逊代运营都包含哪些服务
- Andorid Studio 制作欢乐写数字(Timer启动+帧动画)
- Java 并发编程实践 读书笔记四
- opp原则_面向过程编程(OPP) 和面向对象编程(OOP)的关系