目录:
- @Setter/@Getter
- @Data
- @RequiredArgsConstructor构造函数
- @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();