SpringBoot注解

自定义注解

SpringBoot自定义注解

说明

  1. 访问修饰符必须为public,不写默认为public;
  2. 该元素的类型只能是基本数据类型、String、Class、枚举类型、注解类型以及一维数组;
  3. 该元素的名称一般定义为名词,如果注解中只有一个元素,名字起为value最好;
  4. ()不是定义方法参数的地方,也不能在括号中定义任何参数,仅仅只是一个特殊的语法;
  5. default代表默认值,值必须定义的类型一致;
  6. 如果没有默认值,代表后续使用注解时必须给该类型元素赋值。

    lombok

    官方文档: 查询使用

Lombok Builder 构建器做了哪些事情?
Lombok在Gradle中的正确配置姿势

  1. // lombok,编译有效,打包无效
  2. compileOnly 'org.projectlombok:lombok'
  3. // gradle 5.0以上版本注解处理不再compile classpath,需要增加 annotation processor path
  4. annotationProcessor 'org.projectlombok:lombok'

@Data使用问题

参考:Lombok中关于@Data的使用 equals存在问题
实际是@EqualsAndHashCode造成的问题。如果用在子类上,没有把父类的equals考虑进去。

  1. 用了@Data就不要有继承关系,类似 Kotlin 的做法。
  2. 自己重写equals(), Lombok 不会对显式重写的方法进行生成。
  3. 显式使用@EqualsAndHashCode(callSuper = true), Lombok 会以显式指定的为准

    @EqualsAndHashCode

    Normally, all non-static, non-transient fields are used for identity.
  • @EqualsAndHashCode(of = “fieldA”) Will soon be marked @Deprecated

等价于onlyExplicitlyIncluded = true加@EqualsAndHashCode.Include

  • @EqualsAndHashCode(onlyExplicitlyIncluded = true) 只包含被Include标注的字段
  • @EqualsAndHashCode.Include 字段/方法上
  • @EqualsAndHashCode.Exclude 字段上
  • @EqualsAndHashCode(callSuper = true) 只能用在子类上,把父类的字段计算进去。对于没有继承(父类是Object)且使用了@EqualsAndHashCode(callSuper = true)注解的类,这个类由 Lombok 生成的equals()方法只有在两个对象是同一个对象时,才会返回 true ,否则总为 false ,无论它们的属性是否相同。

    @ToString问题,注意循环依赖

    Jpa对象关联,打印toString出现循环依赖
    使用 @ToString.Exclude

    @Generated

    Lombok有毒慎用?会导致覆盖率崩塌?

    记录

    @CrossOrigin

    @CookieValue