2年前,spring mvc 的项目,每次有接口更新,还要自己去编辑接口文档。还被前端同事鄙视过一次。如今,可能大家都在用swagger或者类似的,自动生成接口文档,线上环境把swagger自动关闭。
首先,pom文件引入swaager的相关依赖。
<!--引入swagger依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--引入swagger-ui依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
spring boot 项目要启用swagger,还要简单配置swaager文档一系列的比如title、version、contact等,还有就是对应swagger要扫描的包,一般就是controller。所以增加了一个配置类。
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2 //标记项目启用swagger api 接口文档
public class SwaggerConfiguration {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(this.apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.springswagger.springswagger01.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("swagger 测试")
.description("swaggr 测试 描述")
.version("0.0.1")
.contact(new Contact("ywj", "", "779815835@qq.com"))
.build();
}
}
当然,这个配置类也要注入到spring 容器中。
这个时候可以不加controller,启动应用。或者新建一个controller便于测试swagger的显示内容。
启动 spring boot的启动类。
访问swagger地址,http://localhost:4949/swagger-ui.html
对于spring boot 整合 swagger ,还可以使用knife4j增强。
先看knife4j增强后的效果图,确实比swagger原装的好看一些。
代码部分没有任何变化,pom.xml重新引入了knife4j依赖。
注意:引入knife4j1.9.6版本的,@EnableSwagger2依然可以使用。如果是2.0.6及以上的版本,改用@EnableSwagger2WebMvc注解。
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-ui</artifactId>
<version>1.9.6</version>
</dependency>
再后来,swagger出了Starter,但是但是没有提供自动配置项,比如title、contact一类。所以还是要手动配置哦哦。 knife4j 也出了starter。
不积跬步,无以至千里。不积小流,无以成江海。请原谅这晚来的进步!!!