1.项目中使用到的mvc版本为5.0.0-release, 加入pom.xml依赖如下:
<!-- 主要是springfox-swagger2和springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<!-- swagger-bootstrap-ui是优化界面doc.html访问 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.8.5</version>
</dependency>
2.配置swaggerconfig配置类
@Configuration
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {
@Bean
public Docket api() {
// 创建注解
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//扫描的路径包,设置basePackage会将包下的所有被@Api标记类的所有方法作为api
.apis(RequestHandlerSelectors.basePackage("com.htw.xxx.wout"))
//指定路径处理PathSelectors.any()代表所有的路径
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("设置文档标题(API名称)")
//文档描述
.description("设置文档标题(API名称)")
//联系方式
.contact(new Contact("htw","com.htw.demo","xxxxxxx@qq.com"))
//版本号
.version("1.0")
.build();
}
//加入重定向,因为遇到循环调用"/null/swagger-resources/configuration/ui"路径找不到的问题
//这个网上许多人说是swagger的bug
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/null/api-docs",
"/api-docs").setKeepQueryParams(true);
registry.addRedirectViewController("/null/swagger-resources/configuration/ui",
"/swagger-resources/configuration/ui");
registry.addRedirectViewController("/null/swagger-resources/configuration/security",
"/swagger-resources/configuration/security");
registry.addRedirectViewController("/null/swagger-resources", "/swagger-resources");
}
}
3.调整web.xml文件中映射配置,如果url-pattern配置的是/可以忽略此步骤,本人遇到的情况是.do导致swagger内置的controller无法访问,访问swagger-ui.html页面只出现标题头,没有接口API信息
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
<!--<url-pattern>*.do</url-pattern>-->
</servlet-mapping>
4.加入servlet控制指定swagger的配置类、入口controller以及对应的静态资源映射
<!-- 在启用swagger时,因为需要请求swagger的Controller,所以需要把swagger请求的Controller对应的上层路径springfox.documentation.swagger2加入扫描中 -->
<context:component-scan base-package="springfox.documentation.swagger2.web" />
<!-- swagger -->
<bean class="com.htw.demo.conf.SwaggerConfig"/>
<!-- swagger2静态资源映射-->
<mvc:resources mapping="/swagger-ui/**" location="classpath:/META-INF/resources/webjars/springfox-swagger-ui"/>
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>
controller的配置文件这里叫:dispatcher-servlet.xml,步骤4中配置就是放在这里
service层对应的配置文件为:spring-*.xml
5.项目中有认证过滤器,或者引入了Shiro等安全框架,一定要将swagger放行
6.启动tomcat,访问地址:http://localhost:9090/myproject/swagger-ui.html或者http://localhost:9090/myproject/doc.html
![](https://img-blog.csdnimg.cn/img_convert/8cd0a87abdfb4af74606747c04951b5f.png)