springmvc引入swagger2
swagger2
简介
API Developmentfor Everyone。
Simplify API development for users, teams, and enterprises with the Swagger open source and professional toolset.
Find out how Swagger can help you design and document your APIs at scale.
简单来说就是一个以springmvc注解驱动为主生成在线文档的工具。
常用网站
官网
官网入口:https://swagger.io/
springmvc引入swagger2
引入指南:https://blog.csdn.net/weixin_38501485/article/details/80704761
Swagger2与通用的Spring MVC Controller冲突:https://blog.csdn.net/qq_37581282/article/details/90384674
springmvc怎么引入swagger2
写在开头
swagger2引入的核心功能主要是如下三个:
在线接口界面/swagger-ui.html
主要是把springfox-swagger-ui-2.6.1.jar包里的页面内容注册成请求
在线文档数据接口/v2/api-docs
主要是把springfox.documentation.swagger2.web.Swagger2Controller注册如spirngmvc容器,此部分可以通过springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration进行整合
动态扫描注册接口的后台功能
主要是针对springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration的整合
实操过程
引入jar包
备注:此处以spring4.1.5为基础引入,swagger2版本为2.6.1
classmate-1.4.0.jar
guava-18.0.jar
spring-plugin-core-1.2.0.RELEASE.jar
spring-plugin-metadata-1.2.0.RELEASE.jar
springfox-core-2.6.1.jar
springfox-spi-2.6.1.jar
springfox-schema-2.6.1.jar
springfox-spring-web-2.6.1.jar
springfox-swagger2-2.6.1.jar
springfox-swagger-common-2.6.1.jar
springfox-swagger-ui-2.6.1.jar
swagger-annotations-1.5.10.jar
swagger-models-1.5.10.jar
如上内容也可以通过maven引入
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
编写配置类
import lombok.Data;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @Description swagger配置类
* @Author chendeming
* @Date 2021/5/4
* @Version 1.0
**/
@Configuration
@EnableSwagger2
@Data
public class SwaggerConfig extends WebMvcConfigurationSupport {
// 是否开启swagger2,正式环境最好用false
private boolean enable = true;
private String scan = "扫包路径";
private String title = "应用名称";
private String description = "简要说明";
private String version = "1.0";
private String contract = "联系方式";
@Bean
public Docket api() {
// 创建注解
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//是否开启 (true 开启 false隐藏。生产环境建议隐藏)
// .enable(isEnable())
.select()
//扫描的路径包,设置basePackage会将包下的所有被@Api标记类的所有方法作为api
.apis(RequestHandlerSelectors.basePackage(getScan()))
//指定路径处理PathSelectors.any()代表所有的路径
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
// Contact contact = new Contact(getContractName(), getContractUrl(), getContractEmail());
return new ApiInfoBuilder()
//设置文档标题(API名称)
.title(getTitle())
//文档描述
.description(getDescription())
//联系方式
.contact(contract)
//版本号
.version(getVersion())
.build();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 注册swagger2页面资源
registry.addResourceHandler("/swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
将配置类注册到容器中
这里需要注意:SwaggerConfig的bean一定要和@Controller、@RestController等请求放在同一个spring上下文中。
1、在springboot中引入
直接用就行,保证springboot容器能够扫描到配置类SwaggerConfig即可
2、在springmvc中引入
将SwaggerConfig以bean形式注册即可
3、在springmvc中引入,但是@Controller和@Service是分离注册的
尤其注意!此处扫描@Controller和@Service的应该是两个xml,需要将SwaggerConfig以bean形式注册在扫描@Controller的那一个。
这个是扫描service的
<!-- scan service -->
<context:component-scan base-package="">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="assignable" expression="com.xxx.SwaggerConfig" />
</context:component-scan>
这个是扫描controller的
<context:component-scan base-package="" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>
<bean id="swaggerDocumentConfig" class="com.xxx.SwaggerConfig"/>
springmvc引入swagger2的更多相关文章
- 快速构建springmvc+spring+swagger2环境
快速构建springmvc+spring+swagger2环境 开发工具:Intellij idea jdk: 1.8 开发步骤: 1.创建maven工程,如图建立工程结构 ...
- SSM项目 以及 springboot 中引入swagger2的方法
swagger2是一个非常好用的接口文档,在开发的过程中方便前后端接口的交接. 下面我们就来讲讲在使用java时,分别在SSM框架,以及springboot+mybatis框架中引入swagger2的 ...
- Decoration5:引入swagger2进行API管理
这一部我们计划把swagger2引入到项目中,把网站的接口以文档的形式展示出来. 1.引入springfox-swagger2.springfox-swagger-ui 2.实现Swagger2 3. ...
- springMVC 引入静态资源Js的方式
前两天项目出现了Js无法引入的情况,本篇博客先总结分析+批判自己犯的低级错,再说说几种访问静态资源的方式! 首先,由于在web.xml里面的servlet拦截匹配为<url-pattern> ...
- springmvc与swagger2
首先呢我们导入相关的jar包文件 为了方便copy我copy一份 <!-- 导入java ee jar 包 --> <dependency> ...
- springMVC引入Validation详解
本文简单介绍如何引入validation的步骤,如何通过自定义validation减少代码量,提高生产力.特别提及:非基本类型属性的valid,GET方法的处理,validation错误信息的统一re ...
- springMVC引入js,css文件404
在web.xml中配置静态资源文件过滤 <!--静态文件引入--> <servlet-mapping> <servlet-name>default</serv ...
- mavn项目(springMVC) 引入静态资源(js、css)等
在web.xml中配置 <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern ...
- springmvc引入静态资源文件
如果web.xml中配置的DispatcherServlet请求映射为“/”, springmvc将捕获web容器所有的请求,当然也包括对静态资源的请求.springmvc会将他们当成一个普通请求处理 ...
- SpringMVC引入CSS等文件
在默认情况下Spring MVC 拦截了所有请求,所以自己要把静态资源配置起来,IDEA 在Spring-service 配置,eclipse在自己新建的SpringMVC配置文件里配置,如下代码 & ...
随机推荐
- Entrypoint undefined = index.html html-webpack-plugin 错误ERROR in Error: Child compilation failed: Module build failed (from ./node_modules/html-webpack-plu SyntaxError: Unexpected token )
Entrypoint undefined = index.html html-webpack-plugin 错误 ERROR in Error: Child compilation failed: M ...
- Z-Blog后台getshell
Z-Blog后台getshell 本人所有文章均为技术分享,均用于防御为目的的记录,所有操作均在实验环境下进行,请勿用于其他用途,否则后果自负. 0x00 环境部署 文件下载地址 打开phpstudy ...
- Python开发的常用组件
1. 生成6位数字随机验证码 import random import string def num_code(length=6): """ 生成长度为length的数字 ...
- 2023年 .NET Monorepo 来了
Monorepo(monolithic repository)是一种项目架构,简单来说就是,将多个项目或包文件放到一个git仓库来管理,很多前端项目vue3.element都是采用的这种架构模式. 之 ...
- vue学习笔记(四)---- 品牌管理案例
一.导入相关包 <script src="../lib/vue2.6.10.min.js"></script> <script src=". ...
- typora配置图床
PicGo无法上传图片,报下图错误 Error: Error in repo name 这里我使用图床是gitee 上传之前需要安装插件 解决方法: 最后一步:配置typora, 点击验证图片选项,查 ...
- 10月25日内容总结——正则表达式相关知识与re模块
目录 一.正则表达式前戏 二.正则表达式内容介绍 1.字符组 2.特殊符号 3.量词 4.贪婪匹配与非贪婪匹配 贪婪匹配 非贪婪匹配 5.转义符 6.正则表达式实战建议与一些例子 建议 例子 三.re ...
- mybatis学习日记3
1.mybatis的延迟加载 问题:在一对多中,当我们有一个用户,他有100个账户 在查询用户的时候,要不要把关联的账户查出来? 在查询账户的时候,要不要把关联的用户查出来? 解决:在查询用户的时候, ...
- 用 HTTP 协议下载资源(WinINet 实现)
用 HTTP 协议下载资源(WinINet 实现) WinINet 使用 HTTP 协议下载资源的流程 相关函数 InternetCrackUrl 解析 URL BOOL InternetCrackU ...
- 三元运算符整体执行情况:Object obj = true? Integer.valueOf(1): Double.valueOf(2.0);
/* * @author YAM */public class Test01 { public static void main(String[] args) { Object obj = true? ...