Lombok的一些注解


目录:

  1. @Setter/@Getter
  2. @Data
  3. @RequiredArgsConstructor构造函数
  4. @Builder建造者模式赋值字段

参考/来源:

@Setter/@Getter

自动生成字段的setter和getter方法

@Setter
@Getter
public class user{
  private String name;
  private String age;
}

@Data

@Data相当于

  • @Getter

  • @Setter

  • @RequiredArgsConstructor

  • @ToString

  • @EqualsAndHashCode

    这5个注解的合集。

@RequiredArgsConstructor构造函数

  • 旧的Spring注入写法

    @RestController
    @RequestMapping("alarm/configs")
    public class AlarmConfigController {
        @Autowired
        private AlarmConfigService alarmConfigService;
    ...
    }
  • 这是推荐写法

    @RestController
    @RequestMapping("alarm/configs")
    public class AlarmConfigController {
        private final AlarmConfigService alarmConfigService;
     
        @Autowired
        public AlarmConfigController(AlarmConfigService alarmConfigService) {
            this.alarmConfigService = alarmConfigService;
        }
    ...
    }

    若是注入的类太多的话呢,看起来挺繁琐的。可以使用Lombok的@RequiredArgsConstructor

    @RestController
    @RequestMapping("alarm/configs")
    @RequiredArgsConstructor
    public class AlarmConfigController {
        //这里必须是final,若不使用final,用@NotNull注解也是可以的
        private final AlarmConfigService alarmConfigService;
    ...
    }

@Builder建造者模式赋值字段

典型的建造者模式

优点:写法优雅

缺点:最明显的一点,在生成Card实例之前,实际上是先创建了一个Card.CardBuilder实例,这样很明显额外占用了内存。

@Builder
public class Card {
    private int id;
    private String name;
    private boolean sex;
}
Card card = Card.builder().id(10).name("dasd").sex(true).build();

文章作者: 小小千千
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小小千千 !
评论
  目录