1,需要pom中新增配置
<!-- swagger2 核心依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<!-- swagger-ui 为项目提供api展示及测试的界面 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
2,web.xml配置中,检查<url-pattern>/</url-pattern>,如果配置的不是 /,需要新增一个为 / 的,swagger内部调用是用默认 /
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3,创建一个配置类
关键是 .apis(RequestHandlerSelectors.basePackage("spring.admin")) 这句配置,规定了swagger的扫描包路径,意思就是只去为spring.admin这个包路径下的文件生成API
package spring.admin.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;
/**
* swagger配置类
* @author zhangk
* @date 2018/12/07 14:41
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//配置swagger扫描包路径
.apis(RequestHandlerSelectors.basePackage("spring.admin"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
ApiInfo apiInfo = new ApiInfoBuilder()
.title("微能后台管理在线接口文档")
.description("swagger-bootstrap-ui")
.termsOfServiceUrl("http://localhost:8080/")
.contact("xxxxxxxx@qq.com")
.version("1.0")
.build();
return apiInfo;
}
}
4,将创建的配置类配置到spring配置文件中去
<bean name="applicationSwaggerConfig" class="spring.admin.config.SwaggerConfig"/>
5,启动项目,然后浏览器地址:localhost:port/项目名/swagger-ui.html#/
6,可能会出现的问题
a, 引入jar包版本不适合
页面会出现类似 fetching resource list: http://localhost:8080/v2/api-docs
检查 fastjson 的版本,我使用1.2.28这个版本正常,之前用的低版本就会出现上面的情况
b,页面出来了,但是不展示接口的API(下面应该出现API列表的地方都是空的)
检查自己的swagger配置类,swagger扫描包路径是否配置不正确,
.apis(RequestHandlerSelectors.basePackage("spring.admin"))
c,web.xml中 dispatcher的配置 url-pattern 要是 /
他表示哪些请求会交给springMVC去处理,因为swagger插件请求都是
默认 / 的,如果不配置这种请求接收处理,会导致404等请求失败