▶ Lombok
Java에서 Model(DTO, VO, Domain)을 만들 때 field에 대한 toString(), Getter()/Setter(), 생성자 등 반복적으로 만드는 코드를 어노테이션을 통해 줄여주는 라이브러리.
▶ Annotation
@ToString
: 모든 필드를 출력하는 toString() 생성.
exclude 속성을 통해 특정 field를 toString() 결과에서 제외시킬 수도 있음.
@ToString(exclude = "password")
public class User {
private String id;
private String name;
private String password;
}
출력 시 클래스명(필드명1=필드값1, 필드명2=필드값2...)와 같은 형식으로 출력됨.
@Getter
: 모든 field에 getter() 생성.
@Setter
: final로 선언되지 않은 모든 field에 setter() 생성.
@EqualsAndHashCode
: equals()와 hascode() 생성
callSuper 속성을 통해 equals()와 hashCode() 자동 생성 시 부모 클래스의 필드까지 감안할지 감안하지 않을지 설정할 수 있음.
@EqualsAndHashCode(callSuper = true)
public class User extends Domain {
private String name;
private String password;
}
"callSuper = true" 설정 시 부모 클래스의 필드 값들도 동일한지 체크하며, "callSuper = false"로 설정(기본값) 시에는 현재 클래스의 필드 값들만 고려함.
@Data
: @ToString, @Getter, @Setter, @EqualsAndHashCode, @RequiredArgsConstructor을 한꺼번에 설정.
@NoArgsConstructor / @RequriedArgsConstructor / @AllArgsConstructor
- @NoArgsConstructor
: parameter가 없는 기본 생성자를 생성.
- @AllArgsConstructor
:모든 필드 값을 파라미터로 받는 생성자를 생성.
- @RequiredArgsConstructor
: 초기화되지 않은 final field와 @NonNull이 붙은 field값만 파라미터로 받는 생성자를 생성.
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class User {
private String id;
@NonNull
private String name;
@NonNull
private String password;
private int[] scores;
}
User userA = new User();
User userB = new User("developer", "barva", "1234", null);
User userC = new User("barva", "1234");
@NonNull
: null 체크 지원. @NonNull이 붙은 field에 null이 들어온 경우 NullPointerException 발생.
참고 자료
projectlombok.org/features/all
'Java > Java' 카테고리의 다른 글
[Java] byte 배열을 물리적인 파일로 변환 (0) | 2020.09.02 |
---|