본문 바로가기
Spring Framework/Spring

롬복 (Lombok)

by 도쿠니 2022. 6. 9.

 

  • Java의 라이브러리로 반복되는 메소드를 Annotation을 사용해서 자동으로 작성해주는 라이브러
    • 컴파일 과정에서 Annotation을 이용해서 코드를 생성한다.

 

Lombok Annotation 종류

  • @Getter , @Setter
    • Java Bean 규약에 맞춰 setter, getter 메소드를 자동으로 생성해줍니다.
    • 기본적으로 public 으로 생성되며, AccessLevel을 명시하여 접근 제어자를 설정할 수 있습니다.
    • 롬복이 생성해주는 메소드와 동일한 메소드가 존재한다면 생성하지 않습니다.

 

  • @NonNull
    • 필드나 메소드, 생성자의 매개변수가 null 인지 check 해줍니다.
    • null일 경우, NullPointerException를 발생시킵니다.

 

  • @ToString
    • toString 메소드를 자동으로 생성해줍니다.
    • 모든 non-static 필드 대상으로 생성합니다
      • $로 시작하는 필드는 기본적으로 제외합니다. 
      • 제외하고 싶은 필드가 있다면, 필드에 @ToString.Exclude를 추가합니다.
      • 혹은 명시적으로 포함하고 싶다면, @ToString(onlyExplicitlyIncluded = true)를 사용해서 @ToString.Include가 붙은 필드만 포함 시킬 수 있습니다.
    • 필드 이름과 값을 함께 확인할 수 있습니다.
      • includeFieldNames 속성을 false로 설정하면 값만 출력됩니다. (기본값이 true)
    • getter가 있다면 필드에 getter로 접근합니다.
    • 순환 참조를 주의해야합니다.

 

  • @EqualsAndHashCode
    • equals 메소드와 hashCode 메소드를 자동으로 생성해줍니다.
    • 기본적으로 모든 non-static, non-transient 필드를 사용하지만 명시적으로 포함,제외할 수 있습니다.
    • 다른 클래스를 상속받는 클래스에 사용할 땐 조심해야합니다.
      • 부모 클래스에도 equlas와 hashCode 메소드를 생성해주는 것은 아니기 때문입니다.
    • callSuper 속성을 true로 설정하면 부모클래스이 equals와 hashCode를 사용합니다.
    • 순환 참조를 주의해야합니다.

 

  • @NoArgsConstructor , @AllArgsConstructor , @RequiredArgsConstructor
    • 생성자를 생성해주는 어노테이션들 입니다.
    • @NoArgsConstructor
      • 매개변수가 없는 생성자를 생성합니다.
    • @RequiredConstructor
      • 초기화되지 않은 모든 final 필드와 @NonNull 필드에 대한 생성자를 생성해줍니다.
        • @NonNull의 경우, 생성자에서 null check도 같이해줍니다.
    • @AllArgsConstructor
      • 모든 필드에 대한 생성자를 만들어줍니다.

 

  • @Data
    • @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstrutor 를 적용한 것과 동일합니다.

 

  • @Value
    • @Data와 동일하지만 불변 클래스일 때 사용합니다.
    • 클래스를 final로 바꾸고 모든 필드를 private , final로 만들고 setter를 생성하지 않습니다.

 

  • @Builder
    • 빌더를 자동으로 작성해줍니다.
    • 클래스에 작성하면 모든 필드에 대한 빌더를 만들어주며, 원하는 필드에 대해서만 빌더를 작성하고 싶다면 생성자를 작성하고 그 위에 붙여주면됩니다.

 

  • @Slf4j
    • 해당 클래스의 logger를 자동 생성 해줍니다.

 

  • @UtilityClass
    • 클래스를 final로 바꾸고 static method만 제공하는 유틸리티 성격의 클래스로 만들어줍니다.
    • 생성자를 private으로 만들어서 객체 생성을 할 수 없도록 합니다.

'Spring Framework > Spring' 카테고리의 다른 글

스프링 MVC - 예외처리 (REST API)  (0) 2022.06.09
스프링 MVC - Filter , Interceptor  (0) 2022.06.08
스프링 MVC - HTTP Request,Response  (0) 2022.06.08
스프링 MVC - 전체 구조  (0) 2022.06.08
Spring Validation  (0) 2022.06.07

댓글