通用技术 测试平台搭建 (五):后端服务添加 swagger 和 lombok

· 2021年03月29日 · 1779 次阅读

一、swagger

swagger 是啥

swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。简单来说就是一个生成接口文档的第三方类库。

为啥要引入 swagger

通过这套规范,你只需要按照它的规范去定义接口及接口相关的信息。再通过 Swagger 衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线接口调试页面等等。这样,如果按照新的开发模式,在开发新版本或者迭代版本的时候,只需要更新 Swagger 描述文件,就可以自动生成接口文档和客户端服务端代码,做到调用端代码、服务端代码以及接口文档的一致性。

但即便如此,对于许多开发来说,编写这个 yml 或 json 格式的描述文件,本身也是有一定负担的工作,特别是在后面持续迭代开发的时候,往往会忽略更新这个描述文件,直接更改代码。久而久之,这个描述文件也和实际项目渐行渐远,基于该描述文件生成的接口文档也失去了参考意义。所以作为 Java 届服务端的大一统框架 Spring,迅速将 Swagger 规范纳入自身的标准,建立了 Spring-swagger 项目,后面改成了现在的 Springfox。通过在项目中引入 Springfox,可以扫描相关的代码,生成该描述文件,进而生成与代码一致的接口文档和客户端代码。这种通过代码生成接口文档的形式,在后面需求持续迭代的项目中,显得尤为重要和高效。

swagger 在项目中的初步应用

1.在项目中引入 swagger 类库

<!-- 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>

2.在启动类上加上@EnableSwagger2注解

3.增加 config 包,并在包里增加 swagger 配置类

package com.syy.testPlatform.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2Configuration {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.syy.testPlatform.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboot利用swagger构建api文档")
                .description("简单优雅的restful风格,http://blog.csdn.net/saytime")
                .termsOfServiceUrl("http://blog.csdn.net/saytime")
                .version("1.0")
                .build();
    }

}

3.浏览器上输入http://localhost:8081/swagger-ui.html 就可以打开 swagger 首页,看到我们的项目中的所有接口地址了,包括接口地址、请求参数、响应结果等,你也可以直接代替 postman 在 swagger 页面进行接口测试

二、lombok

lombok 是啥

Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注释,用来消除 Java 类中的大量样板代码。

为啥要引入 lombok

仅五个字符 (@Data) 就可以替换数百行代码从而产生干净,简洁且易于维护的 Java 类。

常用注解:

@Setter :注解在类或字段,注解在类时为所有字段生成 setter 方法,注解在字段上时只为该字段生成 setter 方法。

@Getter :使用方法同上,区别在于生成的是 getter 方法。

@ToString :注解在类,添加 toString 方法。

@EqualsAndHashCode:注解在类,生成 hashCode 和 equals 方法。

@NoArgsConstructor:注解在类,生成无参的构造方法。

@RequiredArgsConstructor:注解在类,为类中需要特殊处理的字段生成构造方法,比如 final 和被@NonNull注解的字段。

@AllArgsConstructor:注解在类,生成包含类中所有字段的构造方法。

@Data:注解在类,生成 setter/getter、equals、canEqual、hashCode、toString 方法,如为 final 属性,则不会为该属性生成 setter 方法。

@Slf4j:注解在类,生成 log 变量,严格意义来说是常量。

lombok 在项目中的初步应用

1.在 pom 文件里面引入 lombok 库

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.18</version>
    <scope>provided</scope>
</dependency>

2.对项目中的实体类加上@Data(加上@Data之后就可以不用再写 get 和 set 方法了),优化之后的代码如下

package com.syy.testPlatform.bean;

import lombok.Data;

@Data
public class User {
    //主键
    private Long id;
    //用户名
    private String userName;
    //密码
    private String password;
    //姓名
    private String name;
}
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册