[SpringBoot] Lombok

정재현·2024년 1월 22일
0

Spring Boot

목록 보기
10/19
post-thumbnail

Lombok이란

자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메서드/생성자 등을 자동 생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리

Lombok에서 사용되는 어노테이션 종류

  • @NonNull : 자동으로 null체크를 진행하고 null인 경우 NullPointException을 발생
  • @Getter : Class 모든 필드의 Getter method를 생성
  • @Setter : Class 모든 필드의 Setter method를 생성
  • @NoArgsConstructor : Class 기본 생성자를 자동으로 추가
  • @AllArgsConstructor : Class 모든 필드 값을 파라미터로 받는 생성자를 추가
  • @RequiredArgsConstructor : final이나@NonNull이 있는 필드가 포함된 생성자를 자동 생성
  • @ToString : Class 모든 필드의 toString method를 생성
  • @CleanUp : 자동으로 자원관리, close()메서드를 호출하여 자원 종류
  • @EqualsAndHashCode : hashCode, equals 구현
  • @Builder : 해당 클래스에 빌드 패턴을 적용한 클래스를 생성
    • 생성자 상단에 선언시 생성자에 포함된 필드만 빌더에 포함
    • 생성자나 빌더나 생성 시점에 값을 채워줌
    • 차이점
      • 생성자 : 지금 채워야 하는 필드가 무엇인지 정확히 지정 할 수 없다
      • 빌더 : 어느 필드에 어떤 값을 채워야 할 지 명확히 인지 가능

설치 방법

  1. 환경설정
  • Windows: Ctrl + Alt + S
  • macOS: command + ,
  1. 검색창에 "Annotation Processors" 입력 후, 우측 "Enable ~" 체크하고 OK 클릭

  2. Shift 두 번 누르고 plugins 입력 후 엔터

  3. Lombok이 installed가 되지 않은 상태라면 아래처럼 생긴 아이콘의 우측 Install 버튼 클릭 → Intellij 재시작

  4. 다시 Shift 두 번 누르고 plugins 입력 후 Enter

  5. Lombok을 검색했을 때 installed 상태라면 설치 완료

사용 예시

  • Memo 클래스
package com.sparta.springprepare;

import lombok.*;

public class Memo {
    private String username;
    private final String contents;
}
  • Memo 클래스의 @Getter
    • 클래스 위에 롬복 @Getter를 추가한 후 컴파일된 코드를 확인해보면 이처럼 직접 작성하지 않은 getUsername(), getContents() 메서드가 자동으로 추가되어있음을 확인 가능
@Getter
public class Memo {
    private String username;
    private String contents;
}


  • Memo 클래스의 @Setter
    • set…() 메서드를 만들어 준다.
@Setter
public class Memo {
    private String username;
    private String contents;
}

... 

public void setUsername(String username) {
    this.username = username;
}

public void setContents(String contents) {
    this.contents = contents;
}
  • Memo 클래스의 @AllArgsConstructor, NoArgsConstructor
    • 기본 생성자와 모든 필드를 파라미터로 가진 오버로딩된 생성자를 만들어준다.
@NoArgsConstructor
@AllArgsConstructor
public class Memo {
    private String username;
    private String contents;
}

...

public Memo() {
}

public Memo(String username, String contents) {
    this.username = username;
    this.contents = contents;
}
  • Memo 클래스의 @RequiredArgsConstructor
    • final 제어자가 붙은 필드를 파라미터로 가진 오버로딩된 생성자를 만들어준다.
@RequiredArgsConstructor
public class Memo {
    private final Calculator calculator;
    private final String username;
    private String contents;
}

...

public Memo(Calculator calculator, String username) {
    this.calculator = calculator;
    this.username = username;
}

profile
공부 기록 보관소

0개의 댓글