多module项目的springboot配置swagger

文章目录

      • 场景
      • 效果
      • 分析
      • 实现
      • @ConfigurationProperties 注解

场景

项目使用swagger提供接口文档功能, 下面演示下多module的springboot 项目是怎么配置

效果

在这里插入图片描述

分析

通过为每个module设置独立的分组,完成分组切换功能, 下面举个例子

@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket group1Api() {return new Docket(DocumentationType.SWAGGER_2).groupName("Group1").apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.example.group1")).paths(PathSelectors.any()).build();}@Beanpublic Docket group2Api() {return new Docket(DocumentationType.SWAGGER_2).groupName("Group2").apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.example.group2")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Your API Title").description("Your API Description").version("1.0.0").build();}
}

实现

  1. 引入依赖
        <!-- 1. swagger-bootstrap-ui 目前改名为 knife4j --><!-- 2. 实现 swagger-bootstrap-ui 的自动化配置  --><!-- 3. 因为 knife4j-spring 已经引入 Swagger 依赖,所以无需重复引入 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring</artifactId></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-ui</artifactId></dependency>
  1. swagger配置
/*** @version V1.0* @author: carsonlius* @date: 2023/12/28 10:07* @company* @description swagger配置*/
@AutoConfiguration
@ConditionalOnProperty(prefix = "springdoc.api-docs", name = "enabled", havingValue = "true", matchIfMissing = true)
@EnableConfigurationProperties(SwaggerProperties.class)
@EnableSwagger2
public class DemoSwaggerAutoConfiguration {/*** 设置system分组* */@Beanpublic Docket createSystemApi(SwaggerProperties properties) {return new Docket(DocumentationType.SWAGGER_2).groupName("system")// 设置api信息.apiInfo(apiInfo(properties))// 扫描;controller包路径, 获取api接口.select().apis(RequestHandlerSelectors.basePackage("com.carsonlius.module.system")).paths(PathSelectors.any())// 构建Docket对象.build();}/*** 设置system分组* */@Beanpublic Docket createWebApi(SwaggerProperties properties) {return new Docket(DocumentationType.SWAGGER_2).groupName("web")// 设置api信息.apiInfo(apiInfo(properties))// 扫描;controller包路径, 获取api接口.select().apis(RequestHandlerSelectors.basePackage("com.carsonlius.framework.web")).paths(PathSelectors.any())// 构建Docket对象.build();}/*** 创建API信息* */public ApiInfo apiInfo(SwaggerProperties swaggerProperties) {return new ApiInfoBuilder().title(swaggerProperties.getTitle()).description(swaggerProperties.getDescription()).version(swaggerProperties.getVersion()).contact(new Contact(swaggerProperties.getAuthor(), swaggerProperties.getUrl(), swaggerProperties.getEmail())).build();}
}
  1. security配置

对swagger请求放行

          .antMatchers("/swagger-ui.html", "/webjars/**", "/v2/api-docs", "/swagger-resources/**").permitAll()
        // 设置具体请求的权限httpSecurity.authorizeRequests().antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js").permitAll() // 静态资源无需认证.antMatchers("/websocket/message").permitAll() // websocket无需认证.antMatchers("/swagger-ui.html", "/webjars/**", "/v2/api-docs", "/swagger-resources/**").permitAll()// 放行 Druid 监控的相关 URI.antMatchers("/druid/**").permitAll().antMatchers(HttpMethod.GET, permitAllUrlMap.get(RequestMethod.GET).toArray(new String[0])).permitAll().antMatchers(HttpMethod.POST, permitAllUrlMap.get(RequestMethod.POST).toArray(new String[0])).permitAll().antMatchers(HttpMethod.PUT, permitAllUrlMap.get(RequestMethod.PUT).toArray(new String[0])).permitAll().antMatchers(HttpMethod.DELETE, permitAllUrlMap.get(RequestMethod.DELETE).toArray(new String[0])).permitAll().and().authorizeRequests().anyRequest().authenticated(); // 其他请求必须认证

@ConfigurationProperties 注解

SwaggerProperties 通过@ConfigurationProperties将配置属性影射到ConfigurationProperties对象。 这个注解一般配合@EnableConfigurationProperties使用,或者直接在ConfigurationProperties上加上@Component

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速上手:Docker环境下的WordPress安装全攻略

在这篇文章中我会手把手地教你在Linux环境下使用Docker安装WordPress及相关应用。最终&#xff0c;你将会拥有一个安全、支持https的网站。别犹豫啦&#xff0c;跟着我一块儿搞起来吧&#xff01; 一、登录服务器 在之前的文章中有提到如何使用ssh命令登录到我们之前在AWS申请…

嵌入式SOC之通用图像处理之OSD文字信息叠加的相关实践记录

机缘巧合 机缘巧合下, 在爱芯元智的xx开发板下进行sdk的开发.由于开发板目前我拿到是当前最新的一版(估计是样品)&#xff0c;暂不公开开发板具体型号信息.以下简称板子 .很多优秀的芯片厂商,都会提供与开发板配套的完善的软件以及完善的技术支持(FAE)&#xff0c;突然觉得爱芯…

亚信安慧AntDB数据库——通信运营商核心系统的全面演进

AntDB数据库源自通信运营商核心系统&#xff0c;经过15年的平稳运行和不断演进&#xff0c;成功跟随通信技术的升级步伐&#xff0c;逐步迈向5G时代&#xff0c;并且在这期间完成了8次大版本的迭代&#xff0c;为行业树立了技术领先的典范。其独特之处在于具备超融合架构&#…

Transformer模型中的Attention算法

参考【经典精读】万字长文解读Transformer模型和Attention机制 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/104393915图解Transformer_transformer模型训练准确率曲线图-CSDN博客https://blog.csdn.net/qq_41664845/article/details/84969266?appinstall0#commentBoxThe…

【nodejs】Express概念与使用介绍

Express Express是基于Node.js平台&#xff0c;从内置模块http封装出来的第三方模块&#xff0c;可以更方便的开发Web服务器。 中文官网&#xff1a; http://www.expressjs.com.cn/ 一、基本使用 // 导入express const express require(express) // 创建web服务器 const a…

18B20受到LED灯的干扰处理方法

鱼缸使用了18B20测温&#xff0c;采用PWM控制加热棒加热占空比的方法控制鱼缸温度&#xff0c;使用了最简单的温度差调整PWM宽度的方法&#xff0c;温度差越大PWM占空比越大&#xff0c;从而产生更多的加热时间&#xff0c;当温度接近设定值的时候&#xff0c;PWM逐步缩小&…

芋道视频199 - 工作流 - 关系图 - ruoyi-vue-pro

一 新建表单 数据库&#xff1a;bpm_form。实体类&#xff1a;BpmFormDO.java&#xff1a; 二 流程模型、流程部署、流程定义 1 第1步&#xff1a;创建流程模型 页面操作&#xff1a;实体类&#xff1a;Model.java。数据库&#xff1a;ACT_RE_MODEL 流程模板信息表&#xf…

纯CSS实现马里奥效果,回忆一下童年吧

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

gin框架使用系列之三——获取表单数据

系列目录 《gin框架使用系列之一——快速启动和url分组》《gin框架使用系列之二——uri占位符和占位符变量的获取》 一、获取get参数 get请求的参数是直接加在url后面的&#xff0c;在gin中获取get请求的参数主要用Query()和DefaultQuery()两个方法&#xff0c;示例代码如下…

**Python**综合案例

Python综合案例 一、系统需求分析 1、需求分析 使用面向对象编程思想完成学员管理系统的开发,具体如下: ① 系统要求:学员数据存储在文件中 ② 系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。 2、角色…

ArcGIS高程点生成等高线

基本步骤&#xff1a;数据清洗→创建TIN→TIN转栅格→等值线→平滑线。 1.&#xff08;重要&#xff09;数据清理&#xff1a;删除高程点中的高程异常值数据。 2.创建TIN:系统工具→3D Analyst Tools→数据管理→TIN→创建TIN&#xff08;可直接搜索工具TIN&#xff09;。 单击…

【Linux】基本指令二

这篇博客是对于上篇博客的指令的延续 上篇博客我们说了删除目录或普通文件的命令rm&#xff0c;下面是一些对这个指令的补充&#xff0c;我们知道当root用户删除文件时&#xff0c;系统会问是否要删除&#xff0c;而对于普通用户则不会 那我们如果就想让系统问一下呢&#x…