导入依赖
spring版本:2.4.1
jdk版本:8
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
配置:
package com.learn.swagger.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
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;
import java.util.ArrayList;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
// 一个Docket,就一个分组
// 要自定义,就自己写个bean实例注入
@Bean
public Docket docket(Environment environment) {
// 判断是否处于xx环境,swagger只在xx环境生效
Profiles profiles = Profiles.of("dev", "test");
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
// 可以去源码里面看
.apiInfo(apiInfo())
// 分组的名称
.groupName("青奕")
// 是否开启 - 题目:只在生产环境中使用的办法
.enable(flag)
.select()
// 匹配这个包里的接口
.apis(RequestHandlerSelectors.basePackage("com.learn.swagger.controller"))
// 配置扫码包含@Controller注解的类,形如@RequestMapping就不行
.apis(RequestHandlerSelectors.withClassAnnotation(Controller.class))
// 只扫描有@RequestMapping的方法
.apis(RequestHandlerSelectors.withMethodAnnotation(RequestMapping.class))
// 个路径的东西接口才有意义
.paths(PathSelectors.ant("/api/**"))
.build();
}
@Bean
public Docket docket1(Environment environment) {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("老黑");
}
@Bean
public Docket docket2(Environment environment) {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("老豆");
}
@Bean
public Docket docket3(Environment environment) {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("老林");
}
private ApiInfo apiInfo() {
// 作者信息
Contact contact = new Contact("青奕", "https://www.baidu.com", "213184213@qq.com");
return new ApiInfo(
// 文档名称
"Swagger学习API文档",
// 描述
"对着源码学习!!!",
// 版本号
"1.1",
// 团队博客
"https://www.baidu.com",
contact,
// 这个就不用改了
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
常用注解
@ApiModel
用在实体类上面,写个description参数就行
@ApiModelProperty
@Api
参数写个tags = ""就行
@ApiOperation
value在未展开时就显示了
notes可以写详细内容
@ApiParam
一般就只用value, required参数
required默认false
只有value参数,连value都不用写
@ApiIgnore
不生成对应方法的Api文档