SpringBoot Swagger3.0配置


1、導入Maven依賴

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

2、配置application.yml

swagger:
  enable: true
  application-name: xxx系統API說明
  application-version: 1.0
  application-description: springfox swagger 3.0整合Demo
  try-host: http://localhost:${server.port}

3、添加實體類接收swagger配置信息

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties("swagger")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SwaggerProperties {
    /**
     * 是否開啟swagger,生產環境一般關閉,所以這里定義一個變量
     */
    private Boolean enable;

    /**
     * 項目應用名
     */
    private String applicationName;

    /**
     * 項目版本信息
     */
    private String applicationVersion;

    /**
     * 項目描述信息
     */
    private String applicationDescription;

    /**
     * 接口調試地址
     */
    private String tryHost;

}

4、Swagger配置類設置

@Configuration
public class SwaggerConfig implements WebMvcConfigurer {

    private final SwaggerProperties swaggerProperties;

    public SwaggerConfig(SwaggerProperties swaggerProperties) {
        this.swaggerProperties = swaggerProperties;
    }


    //可以創建多個Docket對象,添加進@Bean中 並使用 .groupName("張*") 添加多個分組,前提是名稱不要重復
    @Bean
    public Docket createRestApi() {

        return new Docket(
                DocumentationType.OAS_30)
                .pathMapping("/")
                .groupName("張*")
                // 定義是否開啟swagger,false為關閉,可以通過變量控制
                .enable(swaggerProperties.getEnable())

                // 將api的元信息設置為包含在json ResourceListing響應中。
                .apiInfo(apiInfo())

                // 接口調試地址
                .host(swaggerProperties.getTryHost())

                // 選擇哪些接口作為swagger的doc發布
                .select()
                //RequestHandlerSelectors 配置要掃描接口的方式
                //RequestHandlerSelectors.basePackage("") //指定要掃描的包
                //any() 掃描全部
                //none() 都不掃描
                //.withClassAnnotation(RestController.class) 掃描類上的注解,比如這個只會掃描類上有RestController注解的類
                //.withMethodAnnotation(GetMapping.class) 掃描方法上的注解
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()

                // 支持的通訊協議集合
                .protocols(newHashSet("https", "http"));
    }

    /**
     * API 頁面上半部分展示信息
     * 可以new ApiInfo對象,到ApiInfo里面去看源碼
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title(swaggerProperties.getApplicationName() + " Api Doc")
                .description(swaggerProperties.getApplicationDescription())
                .contact(new Contact("zhang", "com.z.cn", "1348359420@qq.com"))
                .version("Application Version: " + swaggerProperties.getApplicationVersion() + ", Spring Boot Version: " + SpringBootVersion.getVersion())
                .build();
    }

    @SafeVarargs
    private final <T> Set<T> newHashSet(T... ts) {
        if (ts.length > 0) {
            return new LinkedHashSet<>(Arrays.asList(ts));
        }
        return null;
    }


}

 

5、訪問API地址

http://localhost:8080/swagger-ui/
springfox-swagger-ui-3.0.0.jar 下 META-INF.resources.webjars.springfox-swagger-ui

6、實體類注解說明

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("用戶實體類")
public class User {

    @ApiModelProperty("主鍵")
    private int id;
    @ApiModelProperty("登錄賬號")
    private String login;
    @ApiModelProperty("密碼")
    private String password;
    @ApiModelProperty("角色權限")
    private String role;
}

7、Controller注解說明

   //方法說明注解 @ApiOperation
    @ApiOperation("獲取全部用戶")
    @RequestMapping("user/getAll")
    @ResponseBody
    public List<User> getAll(){
        return  userService.selectAll();
    }

 

8、更多操作參考CSDN

 Swagger 3.0配置整合使用教程_南伯基尼-CSDN博客

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM