Lombok은 기계적인 코드 작성을 자동화하여 개발을 단순화하고 코드 가독성을 향상시킨다. 이번 포스팅을 통해 Lombok에서 많이 사용되는 Annotation을 기록해두고자 한다.
| Annotation | 기능 |
|---|---|
| @NoArgsConstructor | 파라미터가 없는 기본 생성자 자동 생성 |
| @AllArgsConstructor | 모든 필드 값을 파라미터로 받는 생성자 자동 생성 |
| @RequiredArgsConstructor | final, @NonNull인 필드 값만 파라미터로 받는 생성자 자동 생성 |
| @Getter | Getter 생성 |
| @Setter | Setter 생성 |
| @ToString | 오버라이딩된 toString 생성 (클래스명 + 필드명) |
| @EqualsAndHashCode | Equals와 HashCode 메서드 오버라이딩 |
| @Data | @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode를 합친 Annotation |
| @Slf4j | log.info("{}", arg1); 출력가능 |
| @Builder | 빌더 패턴을 사용할 수 있도록 코드를 생성, 생성자와 비슷하나 builder의 형식으로 제공 |
public class Item {
private Integer id;
private String name;
public Item() {
}
}
@NoArgsConstructor는 파라미터가 없는 기본 생성자 자동 생성한다.
@NoArgsConstructor
public class Item {
private Integer id;
private String name;
}
public class Item {
private Integer id;
private String name;
public Item(Integer id, String name) {
this.id = id;
this.name = name;
}
}
@NoArgsConstructor는 모든 필드 값을 파라미터로 받는 생성자 자동 생성한다.
@AllArgsConstructor
public class Item {
private Integer id;
private String name;
}
public class Item {
private Integer id;
private final String name;
public Item(String name) {
this.name = name;
}
}
@RequiredArgsConstructor는 final, @NonNull인 필드 값만 파라미터로 받는 생성자 자동 생성한다.
@RequiredArgsConstructor
public class Item {
private Integer id;
private String name;
}
public class Item {
private Integer id;
private String name;
public void setId(Integer id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
}
@Getter @Setter 어노테이션을 붙이면 해당 클래스 멤버 변수들의 getter, setter 메소드를 이용할 수 있다.
@Getter
@Setter
public class Item {
private Integer id;
private String name;
}
해당 클래스의 객체의 생성에 Builder 패턴을 적용시켜준다. 모든 변수들에 대해 적용하길 원하면 클래스 위에 @Builder를 붙이면 되지만, 특정 변수에만 적용하길 원하면 생성자를 작성하고 그 위에 @Builder 어노테이션을 붙여주면 된다.
@Getter
@NoArgsConstructor
public class Item {
private Integer id;
private String name;
@Builder
public Item(String name){
this.name = name;
}
}
@Builder를 실제 활용한다면 아래와 같이 사용할 수 있다.
Item item = Item.builder()
.name("연필");