Swagger 使用+入门

Swagger 快速上手

1. Maven 依赖如下

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.9.2</version>
</dependency>

新版Maven依赖如下

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

2. 配置swagger配置类

1、Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swaggger。

最主要的还是点进Docket的源码吧!

	@EnableSwagger2                // Swagger的开关,表示已经启用Swagger
    @Configuration                 // 声明当前配置类 注册到spring容器
    public class SwaggerConfiguration {

       @Value("${swagger.basePackage}")    
       private String basePackage;       // controller接口所在的包

       @Value("${swagger.title}")    
       private String title;           // 当前文档的标题

       @Value("${swagger.description}")
       private String description;         // 当前文档的详细描述

       @Value("${swagger.version}")
       private String version;   // 当前文档的版本
        
        

       @Bean //配置docket以配置Swagger具体参数
       public Docket createRestApi() {
          return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo2())
                .select()
                .apis(RequestHandlerSelectors.basePackage(basePackage)) // 扫描包
                .paths(PathSelectors.any())  // 路径
                .build();
       }

    public ApiInfo apiInfo(){   // ApiInfo这个类没有set方法,只能构造全部属性,全部属性都要写很麻烦
        return   new ApiInfo("Title",
                "Description",
                "Version1.0",
                "https://91mjw.com/",
                new Contact("hujesse","https://www.baidu.com/","hujesse4@163.com"), //作者信息
                "Apache 2.0License",
                "http://www.apache.org/licenses/LICENSE-2.0 LicenseUrl",
                new ArrayList<VendorExtension>());
    }
    // 可以使用ApiInfoBuilder 来选择实例化
    public ApiInfo apiInfo2(){  // 链式编程,看源码吧!
        return new ApiInfoBuilder()
                .title("Title")
                .description("Description")
                .build();
    }

    }

重点:现在有二个配置环境,如何让swagger在生成环境中使用而不是开发环境

@Value("${swagger.flag}")
private Boolean swaggerFlag;
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo2())
                .enable(swaggerFlag)
                .select()
                // 扫描那个包下的注解
                .apis(RequestHandlerSelectors.basePackage("com.hujesse.controller"))
                .paths(PathSelectors.any())
                .build(); //配置了swagger
    }

3. application.yml添加配置

#yaml配置swagger
        swagger:
            basePackage: com.hujesse.controller
            title: Title
            description: Des
            version: V1.0
            flag: true

4. 添加接口

    @Api(value = "hello")
    @RestController
    public class TestController{

        @ApiOperation(value="byebye")
        @GetMapping("/hello")
        public String hello() {
            return "HelloSwa。";
        }
    }

5. 美化UI

<!-- 引入swagger-ui-layer包 /docs.html-->
<dependency>
   <groupId>com.github.caspar-chen</groupId>
   <artifactId>swagger-ui-layer</artifactId>
   <version>1.1.3</version>
</dependency>

链接:https://www.bilibili.com/video/BV1PE411i7CV?p=50&spm_id_from=pageDriver

狂神说java 47 - 50

微信公众号Springboot14:集成swagger终极版

posted @ 2021-05-25 23:14  能借我十块钱吗  阅读(141)  评论(0编辑  收藏  举报