1.去官网下载swagger-ui
https://github.com/swagger-api/swagger-ui
下载完成后,解压文件。在你项目的WEB-INF目录下,创建一个文件夹,命名为swagger(当然,你也可以用其他的名字命名),然后去刚才解压的文件中找到dist,
将dist文件夹里面的所有文件拷贝到swagger目录下;
2.pom.xml中引入springfox-swagger相关包(注意需要查阅swagger版本与spring版本的兼容性)
查看兼容性:http://mvnrepository.com/
<!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.1.2</version> </dependency>
3.编写swagger主配置类
该类的作用是将swagger注入到spring容器中,可放在任意包下,代码如下
package com.web.manager.web.config; import org.springframework.context.annotation.Bean; import org.springframework.web.servlet.config.annotation.EnableWebMvc; 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; @EnableWebMvc @EnableSwagger2 public class SwaggerConfig { Boolean swaggerEnabled = true; @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .enable(swaggerEnabled) .select() // 选择那些路径和api会生成document .apis(RequestHandlerSelectors.basePackage("com.ansun.web.manager.controller.business")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("投票系统 RESTful APIs") .version("1.0") .build(); } }
注意:.apis()用于设置扫描的Controller类的包,swagger会将给定路径下的所有Controller类都作为自己的有效资源,如果想让
某个类不被扫描到,需要在类上面加上@ApiIgnore注解。
4.applicationContext.xml中增加主配置类的配置以及静态资源映射
<!-- Swagger配置 -->
<bean class="com.ansun.web.manager.web.config.SwaggerConfig"></bean>
<!-- 静态资源映射 -->
<mvc:resources mapping="/static/**" location="/static/" cache-period="31536000"/>
<!-- 静态资源文件,不会被Spring MVC拦截 -->
<mvc:resources mapping="/swagger/**" location="/swagger/" />
5.修改swagger UI中的index.html
找到WEB-INF/swagger目录下的index.html,打开并找到如下代码
<!-- HTML for static distribution bundle build --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Swagger UI</title> <link rel="stylesheet" type="text/css" href="./swagger-ui.css" > <link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" /> <link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" /> <style> html { box-sizing: border-box; overflow: -moz-scrollbars-vertical; overflow-y: scroll; } *, *:before, *:after { box-sizing: inherit; } body { margin:0; background: #fafafa; } </style> </head> <body> <div id="swagger-ui"></div> <script src="./swagger-ui-bundle.js"> </script> <script src="./swagger-ui-standalone-preset.js"> </script> <script> window.onload = function() { // Begin Swagger UI call region const ui = SwaggerUIBundle({ url: "http://192.168.1.6:8080/你的工程名称/v2/api-docs", dom_id: '#swagger-ui', deepLinking: true, presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ], plugins: [ SwaggerUIBundle.plugins.DownloadUrl ], layout: "StandaloneLayout" }) // End Swagger UI call region window.ui = ui } </script> </body> </html>
其中,需要将 http://petstore.swagger.io/v2/swagger.json 更改为 主机+端口+你的项目名称+"/v2/api-docs
<servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/rest-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/service/*</url-pattern> </servlet-mapping>
注意:v2/api-docs为后台接口路径,如果web.xml中配置的springmvc请求拦截不是/*,请注意加上,完整的路径为:主机+端口+你的项目名称+"/(拦截标识service)/v2/api-docs,
6.使用swagger注解
7.接口管理页面的访问
启动你的项目,输入 http://127.0.0.1:8080/项目名称/swagger/index.html,即可看到结果。