6.2.1 慎用构造器注解

因为构造器注解是不支持重载的,以及很多时候结合mybatis用会出现问题

IntelliJ IDEA 使用它的方法

上述就是关于swagger
的一些使用技巧,当然一些常用的注解这里没有讲到,这个随便的百度一下就可以找到,就不在多余的赘述了。

  1. 运行在项目下有一个唯一的java类,运行这个main方法即可。
  2. 访问浏览器访问http://localhost:8080/出现404项目运行成功

@Cleanup


确保在代码执行路径退出当前范围之前,自动清理给定的资源。相当于try-finally语句

    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);
    byte[] b = new byte[10000];
    while (true) {
      int r = in.read(b);
      if (r == -1) break;
      out.write(b, 0, r);
    }
 @ApiOperation("测试一下 swagger 功能") @PostMapping("testSwagger") public ResResult<SwaggerTest> testSwagger(SwaggerTest swaggerTest){ swaggerTest.setAddr; swaggerTest.setAge; swaggerTest.setName("blog.fkxuexi.top"); return ResResult.<SwaggerTest>builder().data(swaggerTest).code(ResCode.SUCCESS).status.build(); }
@RestControllerpublic class IndexController{ @GetMapping public Result index(){ return Result.success; }}

@Data

​ @Data 包含了 @ToString、@EqualsAndHashCode、@Getter /
@Setter和@RequiredArgsConstructor的功能。

6.2.2 慎用builder 注解

builder的模式的使用在结合mybatis的时候很多情况下也会出现问题

Result字段描述

字段 类型 描述
status int 状态码
message string 返回信息
data T 携带数据
success boolean 是否成功

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

  1. @NoArgsConstructor 生成一个无参的构造方法。
  2. @AllArgsConstructor
    会生成一个包含所有变量,同时如果变量使用了NotNull annotation ,
    会进行是否为空的校验
  3. @RequiredArgsConstructor
    必选参数的构造器,会生成一个包含常量,和标识了NotNull的变量
    的构造方法。生成的构造方法是private,如何想要对外提供使用可以使用staticName选项生成一个static方法。(和@Builder结合使用的时候注意
    @Builder会生成无参数的构造器 如果@RequiredArgsConstructor生效
    将会编辑直接报错)

@AllArgsConstructor(access = AccessLevel.PACKAGE) //构造函数为包私有
@RequiredArgsConstructor(staticName = "of")  

lombok
不同于其他的注解,它是在编译期间动态的修改源码,其实可以达到反射一样的效果,但是它比反射更加的高效,是在编译器执行的。

  1. 通用返回类Result
  2. 全局异常处理
  3. Jackson工具类
  4. StringUtil工具
  5. Redis工具类
  6. RestTemplate工具类
  7. 线程池自动装配
  8. swagger 自动装配
  9. DefaultWebMVC注解

@Getter and @Setter

​ 你可以用@Getter /
@Setter注释任何字段或者类上,让lombok自动生成默认的getter / setter方法。

默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值。

@Getter(access = AccessLevel.PROTECTED)
// 源码
public @interface Setter {
    AccessLevel value() default AccessLevel.PUBLIC;
}
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version></dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version></dependency>

@EnableSwagger2@Configurationpublic class SwaggerConfig { //swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo) .select() //为当前包路径 .apis(RequestHandlerSelectors.basePackage("com.yuebao.goldbang.controller")) .paths(PathSelectors.any .build(); } //构建 api文档的详细信息函数,注意这里的注解引用的是哪个 private ApiInfo apiInfo() { return new ApiInfoBuilder() //页面标题 .title("粤宝黄金邦 API ") //创建人 //.contact(new Contact("MarryFeng", "http://www.baidu.com", "")) //版本号 .version //描述 .description("this api for yuebao goldbangs ") .build(); }}

@RestController@Api(description = "this controller just for test some new feature or debug")@RequestMapping("/api/test/")public class TestFeatureController { @ApiOperation("测试一下 swagger 功能") @PostMapping("testSwagger") public ResResult testSwagger(SwaggerTest swaggerTest){ swaggerTest.setAddr; swaggerTest.setAge; swaggerTest.setName("blog.fkxuexi.top"); return ResResult.builder().data(swaggerTest).code(ResCode.SUCCESS).status.build(); }}

静态方法

除了上述的Result.success用于返回成功,并携带Obj数据,Result还提供了其他的静态方法

方法名称 描述
success 成功并返回数据
success() 成功不携带数据
successMsg(String msg) 成功并返回信息
failed(String str) 失败,并提示信息,code使用默认
failed(T data,IErrorCode code) 失败,携带数据和提示信息和code
failed(T data,String message) 失败,并携带数据和提示信息
failed() 失败,不携带信息

Lombok

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法.官网链接

这里就写下几个常用的注解。

使用官方springboot-starter和第三方脚手架工具hunter-spring-boot-starter,快速构建项目,在五分钟内即可进行业务开发。

一:加入pom包
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.14</version>
</dependency>

这里是使用了lombok

使用postman调用接口

@NonNull


给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NullPointerException.

发表评论

电子邮件地址不会被公开。 必填项已用*标注