首页 > 其他分享 >001swagger2--接口文档生成利器

001swagger2--接口文档生成利器

时间:2023-11-22 22:33:59浏览次数:35  
标签:String -- swagger2 文档 private import 001swagger2 properties description

1. 配置

在springboot整合swagger2

1.1 引入jar包

        <dependency>
<groupId>com.allen.pan</groupId>
<artifactId>allen-pan-core</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
</dependency>
<!-- org.springframework.boot:spring-boot-configuration-processor 是 Spring Boot 中的一个模块,
用于处理配置类(Configuration Classes)以及生成与之相关的元数据。
配置类是使用 @Configuration 注解的类,通常用于定义配置信息、Bean 的创建以及其他与应用程序配置相关的内容。

作用:
配置类处理: 该模块用于处理带有 @Configuration 注解的配置类,提取配置信息并生成相应的元数据,以便其他组件能够更容易地理解和利用这些配置。
元数据生成: 生成的元数据可以用于 IDE 的自动补全、静态分析工具的支持等。
Annotation Processor:
spring-boot-configuration-processor 是一个注解处理器(annotation processor)。
在编译时,它会扫描项目中的配置类,分析注解并生成元数据文件,这些文件通常包括 META-INF/spring-configuration-metadata.json。
元数据文件 (spring-configuration-metadata.json):
生成的元数据文件包含了配置类中所有 @ConfigurationProperties 注解的属性信息,包括属性的名称、类型、描述等。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

1.2 配置

1.2.1 新建META-INF/additional-spring-configuration-metadata.json文件

 其内容:

{
"properties": [
{
"name": "swagger2.show",
"type": "java.lang.Boolean",
"description": "是否展示接口文档",
"defaultValue": true
},
{
"name": "swagger2.group-name",
"type": "java.lang.String",
"description": "组名称",
"defaultValue": "r-pan"
},
{
"name": "swagger2.title",
"type": "java.lang.String",
"description": "接口文档标题",
"defaultValue": "r-pan-server"
},
{
"name": "swagger2.description",
"type": "java.lang.String",
"description": "接口文档描述",
"defaultValue": "r-pan-server"
},
{
"name": "swagger2.terms-of-service-url",
"type": "java.lang.String",
"description": "接口文档基础请求路径",
"defaultValue": "http://127.0.0.1:${server.port}"
},
{
"name": "swagger2.base-package",
"type": "java.lang.String",
"description": "接口文档基础接口扫描路径",
"defaultValue": "com.imooc.pan"
},
{
"name": "swagger2.contact-name",
"type": "java.lang.String",
"description": "联系人名称",
"defaultValue": "rubin"
},
{
"name": "swagger2.contact-url",
"type": "java.lang.String",
"description": "联系人地址",
"defaultValue": "https://blog.rubinchu.com"
},
{
"name": "swagger2.contact-email",
"type": "java.lang.String",
"description": "联系人邮箱",
"defaultValue": "[email protected]"
},
{
"name": "swagger2.version",
"type": "java.lang.String",
"description": "项目版本",
"defaultValue": "1.0"
}
]
}

1.2.2 Properties类

import com.allen.pan.constant.AllenPanConstants;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * swagger2配置属性实体
 * 文件: additional-spring-configuration-metadata.json
 * @see  @see 后面可以跟随类名、方法名或者链接,用于指向其他相关的文档或资源
 */
@Data
@Component
@ConfigurationProperties(prefix = "swagger2")
public class Swagger2ConfigProperties {

    private boolean show = true;

    private String groupName = "allen-pan";

    private String basePackage = AllenPanConstants.BASE_COMPONENT_SCAN_PATH;

    private String title = "allen-pan-server";

    private String description = "allen-pan-server";

    private String termsOfServiceUrl = "http://127.0.0.1:${server.port}";

    private String contactName = "allen";

    private String contactUrl = "https://blog.rubinchu.com";

    private String contactEmail = "[email protected]";

    private String version = "1.0";

}

 

1.2.3 配置类

import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;
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;

/**
 * 接口文档配置类
 */
@SpringBootConfiguration
@EnableSwagger2    // 开关
@EnableSwaggerBootstrapUI  // 开关
@Slf4j
public class Swagger2Config {

    @Autowired
    private Swagger2ConfigProperties properties;

    @Bean
    public Docket panServerApi() {
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .enable(properties.isShow())
                .groupName(properties.getGroupName())
                .apiInfo(apiInfo())
                .useDefaultResponseMessages(false)
                .select()
                .apis(RequestHandlerSelectors.basePackage(properties.getBasePackage()))
                .paths(PathSelectors.any())
                .build();
        log.info("The swagger2 have been loaded successfully!");
        return docket;
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(properties.getTitle())
                .description(properties.getDescription())
                .termsOfServiceUrl(properties.getTermsOfServiceUrl())
                .contact(new Contact(properties.getContactName(), properties.getContactUrl(), properties.getContactName()))
                .version(properties.getVersion())
                .build();
    }

}

 

1.3 使用

在其他使用此模块的地方测试

 

标签:String,--,swagger2,文档,private,import,001swagger2,properties,description
From: https://www.cnblogs.com/allenxx/p/17850479.html

相关文章

  • 微服务 Gateway 网关——全局过滤器
     代码步骤: ①网关模块里创建一个类并实现GlobalFilter接口  @Order(-1)//值越小,优先级越高。也可以实现Ordered接口指定优先级@Component//注入到Spring容器publicclassAuthorizeFilterimplementsGlobalFilter{@OverridepublicMono<Void>filt......
  • SQL 中的 MIN 和 MAX 以及常见函数详解及示例演示
    SQLMIN()和MAX()函数SQL中的MIN()函数和MAX()函数用于查找所选列的最小值和最大值,分别。以下是它们的用法和示例:MIN()函数MIN()函数返回所选列的最小值。示例:查找Products表中的最低价格:SELECTMIN(Price)FROMProducts;MAX()函数MAX()函数返回所选列的最大值。......
  • java图形界面化计算器
     虽然java的图形界界面化技术大部分都已经没有人使用了,但应老师的课堂要求,还是进行了一些简单的学习,并实现了一个图形界面化的可混合运算的简易计算器这个计算器主要使用了java本身带有的Swing实现图形界面化,以及学习了部分的栈来实现混合运算先把代码放上,除了(-)按键还没做好之外,其......
  • Java Scanner 类的使用
    目录1.概述2.使用举例2.1.从不同的输入源读取数据2.2.next()和nextLine()的区别2.3.读取大小已知的一维数组2.4.读取大小未知的一维数组2.5.读取长度大小已知的二维数组2.6.读取长度大小未知的二维锯齿数组1.概述(1)Scanner类是Java中一个用于读取用户输入的工......
  • Docker知识(一)
    1.Docker是什么Docker是基于Go语言实现的云开源项目。Docker的主要目标是“Build,ShipandRunAnyApp,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,是用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。Linux......
  • 使用 Android Studio 开发一款弹钢琴app
    A.项目描述本项目主要实现了【钢琴键盘的模拟】、【弹奏引导】以及【乐曲库】等功能。钢琴键盘模拟:提供全尺寸键盘,并且根据用户的喜好来调整键盘的颜色样式。弹奏引导:用户可以根据键盘上的提示符号......
  • linux crontab详解
    当谈到在Linux系统上自动化任务时,Crontab(定时任务表)是一个强大而灵活的工具。它允许用户根据特定的时间计划执行命令或脚本。在这篇博客文章中,我们将深入研究Linux中Crontab的详细信息,了解其语法、用法以及一些常见的例子。1.什么是Crontab?Crontab是一个用于设置和管理定时任务......
  • 求四个数的最大公因数
    #include<stdio.h>intret(intx,inty){  inti=0;  if(x%y==0)    returnx;  while(x%y)  {         i=x%y;      x=y;      y=i;      returni;     ......
  • Java正则表达式从入门到精通​
    Java正则表达式从入门到精通JAVA正则表达式规则Java中的正则表达式规则,在java.util.regex.Pattern类文档中有详细说明。字符类匹配符(只匹配一个字符)规则字符说明[abc]匹配a,b或c中的任意一个字符[^abc]除a,b或c之外的任意一个字符(取反)[a-zA-Z]包含在a到z或A到Z范围内的任意一个字符(......
  • pycharm中debug布局
    由于一直忘记,这里做个笔记吧。为了方便调试代码,如下布局比较方便实用。左侧为调试区,右侧是变量区。成为上面这种格式需要三步:1右键选择layout->restoredefaultlayout得到如下2把从consolt鼠标拖到左下角得到如下3右击frame->layout->去掉frame对号选择......