之前用的是springboot整合swagger2,新公司这边的系统是之前开发的,用的是SSH框架,这里记录一下 整合过程,以及遇到的坑。
1.导入依赖
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1-jre</version>
</dependency>
<!-- 引入swagger-bootstrap-ui包 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.0</version>
</dependency>
导入依赖时 一定要注意使用版本,我这里spring-web:4.1.4.RELEASE 所以用的swagger版本用 的2.6.0。如果swagger使用2.7.0及以上的版本 整合不会成功。整合时,注意自己的版本号就行了,如果不行,试试降低下swagger2版本号。
特别说下 swagger-bootstrap-ui 是前端优化包。swagger2原生的 界面实在有点难看。
2.创建配置类
package com.mzwl.data.server.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
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;
/**
* @author kelly on 2021/3/16.
* @version 1.0
*/
@Configuration
@EnableSwagger2
@EnableWebMvc
public class Swagger2Configuration extends WebMvcConfigurerAdapter {
/**
* Swagger 页面显示提示信息配置
* @return
*/
@Bean
public Docket docketDataPush() {
return new Docket(DocumentationType.SWAGGER_2)
//关闭默认响应状态码如:201,400,401
// .useDefaultResponseMessages(false)
.apiInfo(apiInfo())
// 是否开启Swagger
// .enable(true)
.groupName("数据推送--API")
.select()
//指定swagger扫描的包
.apis(RequestHandlerSelectors.basePackage("com.mzwl.data.server.base.controller"))
// 通过 ant 匹配
.paths(PathSelectors.any())
.build()
;
}
/**
* Swagger 页面显示提示信息配置
* @return
*/
@Bean
public Docket docketDevice() {
return new Docket(DocumentationType.SWAGGER_2)
//关闭默认响应状态码如:201,400,401
// .useDefaultResponseMessages(false)
.apiInfo(apiInfo())
// 是否开启Swagger
// .enable(true)
.groupName("更新设备--API")
.select()
//指定swagger扫描的包
.apis(RequestHandlerSelectors.basePackage("com.mzwl.data.server.user.controller"))
// 通过 ant 匹配
.paths(PathSelectors.any())
.build()
;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xxxxx--接口文档")
.description("xxxxx接口文档")
.termsOfServiceUrl("http://127.0.0.1:8999/")
.contact("kelly921011@outlook.com")
.version("1.0")
.build();
}
}
3.spring-mvc.xml配置文件 中 导入 swagger2配置信息
<!--swagger2-->
<bean class="com.mzwl.data.server.config.Swagger2Configuration"/>
4.修改web.xml配置
之前搭建ssh框架的时候 基本都已经配置好了 检查下是否有如需配置
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
贴下我这里完整的信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml,classpath:spring-hibernate.xml</param-value>
</context-param>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- openSessionInView配置 作用是延迟session关闭到view层 -->
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<!-- 监听servletContext,启动contextConfigLocation中的spring配置信息 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 防止spring内存溢出监听器 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<servlet>
<description>spring mvc servlet</description>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 此处配置的是SpringMVC的配置文件 -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!--跨域配置 start-->
<filter>
<filter-name>corsFilter</filter-name>
<filter-class>com.mzwl.data.server.filter.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>corsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--跨域配置 start-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
5.在Controller中使用 swagger2注解
注解 的使用接不细说了。使用完成之后启动服务。访问:http://127.0.0.1:8080/swagger-ui.html
当然上面的我不习惯用,http://127.0.0.1:8080/doc.html
感谢打赏 微信二维码