Lombok 롬복
장점
- 어노테이션을 기반으로 코드를 자동생성하여 생산성 향상
어노테이션
@Getter, @Setter
- getter/setter 메서드 생성
-
@Setter
의 경우 Entity에서는 사용을 지양해야 한다- Setter를 통해 엔티티의 데이터를 변경하면 변경 포인트가 많아져 유지보수 하기가 힘들어진다
- 변경 메서드를 만들어 데이터를 변경해 주는 것이 좋다
@NonNull
- 해당 변수가 null로 넘어오면
NullPointException
을 발생시킨다 - 롬복 대신 Spring의
@NonNull
을 사용하자
@NoArgsConstructor
- 기본 생성자를 생성
-
access
속성 : 접근제어자 변경- JPA 엔티티의 경우 기본생성자를 통해 무분별한 엔티티 객체의 생성을 막기 위해
AccessLevel.PROTECTED
를 사용한다
- JPA 엔티티의 경우 기본생성자를 통해 무분별한 엔티티 객체의 생성을 막기 위해
@RequiredArgsConstructor
-
final
이나@NotNull
이 붙은 필드만 사용하는 생성자 생성
@AllArgsConstructor
- 모든 필드를 사용하는 생성자를 생성
@Builder
- 빌더를 생성
- 어떤 생성자도 존재하지 않으면
default
접근제어자의 AllArgsConstructor를 자동으로 생성한다 -
toBuilder
속성 : 객체의 일부 값만 변경된 객체를 생성
UserVO u = User.builder()
.id(1L)
.name("europani")
.build();
UserVO u2 = u.toBuilder().name("europani2").build();
@Builder.Default
- 필드의 기본 값을 설정할 때 사용
@Singular
- 컬렉션 필드에 데이터를 추가할 때 하나씩 추가 할 수 있도록 설정
@Singular
private List<String> hobby;
UserVO.builder()
.hobby("reading")
.hobby("coding")
.build();
@ToString
- 필드를 기반으로 toString() 메서드를 자동으로 완성
-
exclude
속성 : 제외시킬 필드 선택- JPA를 사용할 때 양방향 연관관계를 갖는 엔티티에서 해당 엔티티를 제외하지 않으면 순환참조가 발생한다
- 반드시 연관관계를 갖는 엔티티를 제외해야 한다
@Value
- @Getter +
private final
field + @AllArgsConstructor + @ToString + @EqualsAndHashCode 모두 사용 -
@Data
의 immutable 버전
@Data (사용X)
- @Getter + @Setter + @RequiredArgsConstructor + @ToString + @EqualsAndHashCode 모두 사용
- 필요한 어노테이션만 선택해서 사용하는 것이 좋다