SpringBoot集成Swagger

  1. 新建SpringBoot-web项目

  2. 导入maven依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!-- Swagger2 -->
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
    </dependency>
    <!-- Swagger的ui界面 -->
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
    </dependency>
  3. 编写一个hello工程

  4. 配置Swagger

    1
    2
    3
    4
    @Configuration
    @EnableSwagger2 //开启Swagger2
    public class SwaggerConfig {
    }
  5. 浏览器访问:http://localhost:8080/swagger-ui.html

    image-20220718113600228

访问swagger-ui.html 404报错一秒解决

主要是swagger的版本不能用3.0.0

Swagger的基本配置信息

添加配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* TODO
*
* @ClassName SwaggerConfig
* @Author Alfa
* @Data 2022/7/18 11:25
* @Version 1.0
**/
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {
// 配置了Swagger的Docket bean实例
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo());
}
//配置Swagger信息
private ApiInfo apiInfo() {
// 作者信息
Contact contact = new Contact("秦将", "http://idealstars.space", "123@qq.com");
return new ApiInfo(
"狂神的swagger日记",
"即使再小的帆也能远航",
"1.0",
"http://idealstars.space",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}

界面展示

image-20220718115019912

配置扫描接口和是否启用swagger

配置位置

image-20220718122953122

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 配置了Swagger的Docket bean实例
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//是否启用swagger,如果为false,则swagger不能再浏览器中访问
.enable(false)
.select()
// RequestHandlerSelectors 配置要扫描接口的方式
// basePackage指定要扫描的包
// any():扫描全部
// none():不扫描
//.withClassAnnotation():扫描类上的注解,参数是一个注解的反射对象
//.withMethodAnnotation():扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.kuang.swagger.controller"))
//过滤路径
//.paths(PathSelectors.ant("/kuang/**"))
.build();
}

不同生产环境启用swagger

image-20220907133141772

要注意不同生产环境下,port可能不同

配置API文档的分组

配置多个返回Docket的Beanimage-20220907134703515

swagger中没有新加的实体类属性(新加的属性在swagger中不显示)问题

试了一下只留get方法或者set方法,发现swagger竟然都能加载到属性,那么确定了属性是根据对应的get、set方法是否存在获取的。