天天看點

Spring Boot內建SwaggerSpring Boot內建SwaggerSwagger常用注解

Spring Boot內建Swagger

1、建立一個springboot的Web項目

2、導入依賴

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>
           

3、建立SwaggerConfig配置檔案

@Configuration //表明這是一個配置類
@EnableSwagger2  //開啟Swagger2
public class SwaggerConfig {
    
}
           

4、配置 Swagger 資訊

4.1 配置Swagger的Docket的Bean執行個體

@Configuration //表明這是一個配置類
@EnableSwagger2  //開啟Swagger2
public class SwaggerConfig {
    /**
     * 1、配置了Swagger的Docket的Bean執行個體
     */
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
    }
    /**
     * 2、配置Swagger的ApiInfo資訊
     */
    private ApiInfo apiInfo(){
        //作者資訊
        Contact contact = new Contact("Tenton", "https://blog.csdn.net/Tenton", "[email protected]");
        return new ApiInfo(
                "Tenton的SwaggerApi文檔", //文檔标題
                "有理想,隻要肯奮鬥,終将會到達",  //文檔描述
                "v1.0",  //文檔版本
                "https://blog.csdn.net/Tenton",  //作者網站位址
                contact, //作者資訊
                "Apache 2.0", //許可證
                "http://www.apache.org/licenses/LICENSE-2.0", //許可證Uri
                new ArrayList());
    }
}
           

4.2 配置掃描接口

@Configuration //表明這是一個配置類
@EnableSwagger2  //開啟Swagger2
public class SwaggerConfig {
    /**
     * 1、配置了Swagger的Docket的Bean執行個體
     */
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                /**
                 *
                 * enable 是否啟動Swagger,如果為False,則swagger不能在浏覽器中通路
                 */
                .enable(true)
                .select()
                /**
                 * RequestHandlerSelectors  配置要掃描接口的方法
                 * basePackage("com.tenton.controller")  指定要掃描的包:com.tenton.controller 一般用此方法
                 * any(): 掃描全部
                 * none(): 都不掃描
                 * withClassAnnotation(GetMapping.class) : 掃描類上的注解,參數是一個注解的反射對象
                 * withMethodAnnotation(RestController.class) : 掃描方法上的注解
                 */
                .apis(RequestHandlerSelectors.basePackage("com.tenton.controller"))
                /**
                 * paths() 過濾什麼路徑
                 * ant:指定路徑  一般用此方法
                 * any:過濾全部
                 * none:全部不過濾
                 * regex:按照正規表達式來過濾 
                 */
                .paths(PathSelectors.ant("/tenton/**"))
                .build();
    }
    /**
     * 2、配置Swagger的ApiInfo資訊
     */
    private ApiInfo apiInfo(){
        //作者資訊
        Contact contact = new Contact("Tenton", "https://blog.csdn.net/Tenton", "[email protected]");
        return new ApiInfo(
                "Tenton的SwaggerApi文檔",
                "有理想,隻要肯奮鬥,終将會到達",
                "v1.0",
                "https://blog.csdn.net/Tenton",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}
           

4.3 設定要顯示的Swagger環境 ,隻允許開發(dev)和測試(test) 顯示

@Configuration //表明這是一個配置類
@EnableSwagger2  //開啟Swagger2
public class SwaggerConfig {
    /**
     * 1、配置了Swagger的Docket的Bean執行個體
     */
    @Bean
    public Docket docket(Environment environment){
        /**
         * 3、設定要顯示的Swagger環境
         */
        Profiles profiles = Profiles.of("dev","test");
        /**
         * 擷取項目的環境
         * 通過environment.acceptsProfiles判斷是否處在自己設定的環境中
         */
        boolean flag = environment.acceptsProfiles(profiles);
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                /**
                 *
                 * enable 是否啟動Swagger,如果為False,則swagger不能在浏覽器中通路
                 * 監聽環境配置
                 */
                .enable(flag)
                .select()
                /**
                 * RequestHandlerSelectors  配置要掃描接口的方法
                 * basePackage("com.tenton.controller")  指定要掃描的包:com.tenton.controller 一般用此方法
                 * any(): 掃描全部
                 * none(): 都不掃描
                 * withClassAnnotation(GetMapping.class) : 掃描類上的注解,參數是一個注解的反射對象
                 * withMethodAnnotation(RestController.class) : 掃描方法上的注解
                 */
                //.apis(RequestHandlerSelectors.basePackage("com.tenton.controller"))
                /**
                 * paths() 過濾什麼路徑
                 * ant  一般用此方法
                 */
                //.paths(PathSelectors.ant("/tenton/**"))
                .build();
    }
    /**
     * 2、配置Swagger的ApiInfo資訊
     */
    private ApiInfo apiInfo(){
        //作者資訊
        Contact contact = new Contact("Tenton", "https://blog.csdn.net/Tenton", "[email protected]");
        return new ApiInfo(
                "Tenton的SwaggerApi文檔",
                "有理想,隻要肯奮鬥,終将會到達",
                "v1.0",
                "https://blog.csdn.net/Tenton",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}
           

4.4 配置相應配置檔案

application-dev.properties

#設定端口
server.port=8081
           

application-test.properties

#設定端口
server.port=8082
           

application.properties

# 目前項目環境為開發環境
spring.profiles.active=dev
           

4.5 配置API分組

@Configuration //表明這是一個配置類
@EnableSwagger2  //開啟Swagger2
public class SwaggerConfig {
    /**
     * 4、配置API分組
     */
    @Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("Java");//組名
    }
    @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("SpringBoot");
    }
    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("SSM");
    }
}
           
Spring Boot內建SwaggerSpring Boot內建SwaggerSwagger常用注解

配置實體類

@ApiModel("使用者實體")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @ApiModelProperty("姓名")
    private String userName;
    @ApiModelProperty("密碼")
    private String password;
}
           

控制類UserController

@Api(tags = "使用者控制類接口")
@Controller
public class UserController {
    @ApiOperation("擷取使用者的接口")
    @PostMapping("/user")
    public User getUser(User user){
        return user;
    }
}
           

Swagger常用注解

Swagger的所有注解定義在io.swagger.annotations包下

Swagger注解 簡單說明
@Api(tags = “xxx子產品說明”) 作用在子產品類上
@ApiOperation(“xxx接口說明”) 作用在接口方法上
@ApiModel(“xxxPOJO說明”) 作用在模型類上:如VO、BO
@ApiModelProperty(value = “xxx屬性說明”,hidden = true) 作用在類方法和屬性上,hidden設定為true可以隐藏該屬性
@ApiParam(“xxx參數說明”) 作用在參數、方法和字段上,類似@ApiModelProperty

繼續閱讀