1.首先需要在pom文件中加入
<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>
2.创建自己的SwaggerConfig类,在此类加上@Configuration和@EnableSwagger2俩个注解,在类中创建一个返回Docket实体的bean。如下
import com.google.common.base.Predicate; import org.springframework.boot.autoconfigure.web.BasicErrorController; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.RequestHandler; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import static springfox.documentation.builders.PathSelectors.regex; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket swagger(){ Predicate<RequestHandler> predicate = new Predicate<RequestHandler>() { @Override public boolean apply(RequestHandler input) { Class<?> declaringClass = input.declaringClass(); if (declaringClass == BasicErrorController.class)// 排除 return false; if(declaringClass.isAnnotationPresent(RestController.class)) // 被注解的类 return true; if(input.isAnnotatedWith(ResponseBody.class)) // 被注解的方法 return true; return false; } }; return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .useDefaultResponseMessages(false) .select() .apis(predicate) .paths(regex("/api/.*")) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Swagger 接口")//大标题 .version("1.0")//版本 .build(); } }
3.然后在返回的实体和controller中接口加入Swagger的注解,启动服务,在浏览器输入服务的url+/swagger-ui.html,进入swagger页面测试接口。
Swagger常用注解有
1.@ApiModel 用于注解实体类,有value description parent等属性
2.@ApiModelProperty(notes = "案件编号")用于注解实体类中的属性3.@Api用于注解controller类 有value description等属性
4.@ApiOperation用于注解controller类中的接口方法, 有value和notes等属性5.@ApiParam(value = "批次号") 用于注解接口方法的参数6.@ApiImplicitParams({@ApiImplicitParam(name = "page", dataType = "integer", paramType = "query", value = "页数 (0..N)"), @ApiImplicitParam(name = "size", dataType = "integer", paramType = "query", value = "每页大小."), @ApiImplicitParam(name = "sort", allowMultiple = true, dataType = "string", paramType = "query", value = "依据什么排序: 属性名(,asc|desc). ") }) 和 @ApiIgnore Pageable pageable 合用,用于注解接口方法的实体参数。等等