java中的knife4j、Swagger配置过程详解

news2024/11/16 22:23:29

knife4j的配置过程如下:

1、首先引入依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>

2、创建一个spring boot模块然后修改模块的结构如下图:

在这里插入图片描述

3、spring.factories中的内容为:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.jjw.core.knif4j.MyKnife4jAutoConfiguration

4、编写配置类,结构如下图:

在这里插入图片描述

5、MyKnife4jAutoConfiguration中的内容如下:

package com.jjw.core.knif4j;

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
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.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.HashSet;

/**
 * // 使用需要在其yml中添加如下配置 可以看 service-admin中如何配置的
 * //steven:
 * //    knife4j:
 * //        basePackage: com.jjw.admin.controller
 * //        title: 哈哈哈我的title
 *
 *
 *
 */
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
@EnableConfigurationProperties(MyKnife4jProperties.class)
public class MyKnife4jAutoConfiguration {
    /**
     * 这种是用到了需要在service加入此依赖才可以使用
     * 另外需要在yml中设置title
     */



    // 使用需要在其yml中添加如下配置 可以看 service-admin中如何配置的
    //steven:
    //    knife4j:
    //        basePackage: com.jjw.admin.controller
    //        title: 哈哈哈我的title

    @Autowired
    private MyKnife4jProperties myKnife4jProperties;

    @Bean
    @ConditionalOnMissingBean(Docket.class)//干嘛:当 其他人没有配置docket的对象交给spring容器管理的时候。我这个方法就会执行
    public Docket defaultApi2() {
        HashSet<String> strings = new HashSet<>();
        strings.add("application/json");
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                        .title(myKnife4jProperties.getTitle())
                        .description(myKnife4jProperties.getDescription())
                        .termsOfServiceUrl(myKnife4jProperties.getServiceUrl())
                        .contact(myKnife4jProperties.getContact())
                        .version(myKnife4jProperties.getVersion())
                        .build())
                .produces(strings)
                //分组名称
                .select()

                //这里指定Controller扫描包路径
                .apis(RequestHandlerSelectors.basePackage(myKnife4jProperties.getBasePackage()))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
}

6、myKnife4jProperties中的内容如下:

package com.jjw.core.knif4j;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;


@ConfigurationProperties("steven.knife4j")
@Data
public class MyKnife4jProperties {

    private String basePackage = "com.jjw";

    private String description = "默认描述";

    private String title = "默认标题";

    private String contact = "联系人";

    private String version = "1.0";

    private String serviceUrl = "http://www.jjw.com";


}

使用:在其他微服务中引入此依赖

<dependency>
    <groupId>com.jjw</groupId>
    <artifactId>new-swagger</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

运行微服务后即可在浏览器上使用微服务的ip:端口/doc.html查看接口文档

例如:http://localhost:8002/doc.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/711050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS Linux的替代品(四)_openEuler 22.03-LTS基础安装教程

文章目录 1 openEuler 22.03-LTS简介1.1 系统安装1.1.1 发布件1.1.2 最小硬件要求1.1.3 硬件兼容性 1.2 关键特性1.2.1 openEuler 22.03-LTS基于 Linux Kernel 5.10内核构建, 在进程调度、内存管理等方面带来10余处创新1.2.2 新介质文件系统1.2.3 内存分级扩展1.2.4 用户态协议…

Clouder Manager日常管理及使用

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

低代码:解放生产力的利器还是一场空洞的炒作?

低代码有人说是毒瘤&#xff0c;也有人说是银弹。到底应该怎么看呢&#xff1f;存在即合理。 “存在”包括两个角度&#xff1a; 银弹论毒瘤论 无论从哪个角度看&#xff0c;既然存在这样的论调&#xff0c;就有它们的合理性。 先把关注点移到低代码本身&#xff0c;低代码…

关联查询和子查询

关联查询和子查询&#xff1a; 二、关联查询&#xff1a; 1、全连接&#xff1a;两个表作笛卡尔积 2、内连接&#xff1a;找到两个表中的关联数据 3、外连接&#xff1a; 左外连接&#xff1a;grade中12无学生&#xff0c;但是还是会显示出来&#xff08;以左边的表为基准&am…

javascript 触发事件

在 JavaScript 中&#xff0c;原始方法 initEvent() 用于创建新事件。 最新更新添加了用于构建自定义事件的新关键字。 此外&#xff0c;在为 JavaScript 构建的清单中还有大量事件。 以下部分将预览预定义事件之一的示例及其触发方式。 还有一个定制的事件&#xff0c;将细节…

Redis 高可用【主从复制 哨兵 集群】

主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。缺陷&#xff1a;故障恢复无法自动化&#xff1b;写操作无法负载均衡&am…

使用JMX管理Spring Bean

1.使用JMX管理Spring Bean 2.spring通过annotation注解注册MBean到JMX实现监控java运行状态 3.Spring与JMX集成

LangChain大型语言模型(LLM)应用开发(三):Chains

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

系列一、RocketMQ入门

一、MQ概述 1.1、MQ简介 MQ&#xff0c;Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也称为消息中间件&#xff0c;是一套提供了消息生产、存储、消费全过程的API软件系统。消息&#xff1a;消息即数据&#xff0c;一般消息的体量不会很大。 1.2、M…

redis主从同步对象模型学习笔记

目录 1 淘汰策略1.1 配置1.2 哪些数据将会被淘汰呢&#xff1f;1.2.1 过期key中的1.2.2 所有的key1.2.3 禁止淘汰 2 持久化2.1 背景2.1.1 概念2.1.2 fork进程写时复制机制2.1.3 大key 2.2 redis持久化的方式2.2.1 aof2.2.2 aof-rewrite2.2.3 rdb 2.3 redis持久方案的优缺点2.4 …

Redis跳表

简介 Redis 中的有序集合(Sorted Set)是用跳表&#xff08;Skip list&#xff09;来实现的。这里就需要了解一下跳表的概念。 链表&#xff1a;链表插入&#xff0c;删除某一个节点的时间复杂度是O(1)&#xff0c;但是查询的时间复杂度是O(n)。 跳表就是解决链表在有序节点场…

Jmeter:使用代理录制脚本

目录 前言&#xff1a; 介绍下各设置项&#xff1a; 前言&#xff1a; JMeter 是一个功能强大的性能测试工具&#xff0c;可以用于模拟多种场景下的负载测试和性能测试。其中一个常用的功能是使用代理服务器录制脚本&#xff0c;以便在后续的测试中模拟真实的用户行为。 下…

数据库优化---索引

这里写目录标题 索引简介结构&#xff08;Btree&#xff09;操作总结 索引 简介 优缺点 利远远大于弊 结构&#xff08;Btree&#xff09; 所有的数据都存在叶子节点 操作 具体代码 注意&#xff0c;主键以及唯一约束&#xff0c;都会自动创建一个索引&#xff0c;主键索…

git常用命令之Pull

7. Pull 命令作用延展阅读git pull 1. git fetch2. git merge FETCH_HEAD1. fetch origin的所有分支2. merge 当前分支参考git pull origin master1. git fetch origin master2. git merge FETCH_HEAD 拓展&#xff1a;Git常用命令汇总

时间触发嵌入式系统:各种系统的概念

1.1 引言 一说到软件系统&#xff0c;脑子里面就会闪现很多名词&#xff1a; 信息系统 桌面应用系统 实时系统 嵌入式系统 事件触发系统 时间触发系统 这些名字搞得脑子很乱&#xff0c;感觉都熟悉&#xff0c;又有些陌生&#xff0c;还是需要简单的介绍一下。 1.2 信息系统…

MySQL高可用 MMM

MySQL高可用 MMM 一、MMM1.1 MMM介绍1.2 关于 MMM 高可用架构的说明 二、搭建 MySQL MMM2.1 环境准备2.2 搭建 MySQL 多主多从模式2.3 安装配置 MySQL-MMM 一、MMM 1.1 MMM介绍 Master-Master replication manager for MvSQL&#xff0c;MySQL 主主复制管理器。 1、是一套支持…

vue3如何使用vant中IndexBar索引栏?

目录 1、为什么要使用IndexBar索引栏&#xff1f;2、引入3、基础使用4、处理后端返回的数据5、渲染页面 1、为什么要使用IndexBar索引栏&#xff1f; 在我们开发移动端的时候&#xff0c;有时候会遇到制作通讯录或者城市索引栏&#xff0c;这种时候我们就可以使用vant中快捷方…

warp框架教程2-log模块,addr模块和header模块

log , addr 和 header 从本文开始&#xff0c;我们将介绍 warp 中 Filter 的核心模块。在文档中有 filter 相关模块的介绍&#xff0c; 本文来介绍其中的 addr&#xff0c;header 和 log addr 模块 addr 模块非常简单&#xff0c;它是用来获取远程客户端的地址的。使用起来…

高性能计算学习教程,从入门到精通

学习高性能计算需要一定的计算机科学和数学基础。以下是一个详细的学习路线&#xff0c;从入门到精通高性能计算的步骤&#xff1a; 阶段一&#xff1a;基础知识学习 计算机科学基础&#xff1a;了解计算机体系结构、操作系统、数据结构和算法。学习编程语言如C/C、Python等。 …

苹果手机没法访问Fildder代理服务怎么办

浏览器输入http://ip:port进入可下载证书页面 异常情况&#xff1a; 浏览器访问http://ip:port后无响应&#xff0c;白屏&#xff0c;或有“无法使用跳转网络”的提示 解决方法&#xff1a; 1. PC重新下载fiddle证书并重启 Fildder4--Tools--Options--HTTPS--Actions--"…