본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/spring

[Spring] Lombok 기능 생성자 자동생성, NoargsConstructor, RequiredArgsConstructor, AllArgsConstructor 정리

by 미노드 2024. 2. 11.

lombok은 getter, setter , 생성자 등 자동 생성을 지원해주는 기능입니다.

그중에서 NoargsConstructor, RequiredArgsConstructor, AllArgsConstructor 를 구분하는게 필요해서 간략하게 포스팅해보려 합니다.

public class Board {

  private int age;
  private Long id;
  
}

@NoArgsConstructor

기본 생성자를 생성해줍니다. 이 경우 초기값 세팅이 필요한 final 변수가 있을 경우 컴파일 에러가 발생하니 주의해야 합니다.

Board board = new Board();
// @NoArgsConstructor(force=true) 를 사용하면 null, 0 등 기본 값으로 초기화 된다.

@NoArgsConstructor
public class Board {

  private int age;
  private Long id;
  
}

 

@RequiredArgsConstructor

final 변수, Notnull 표시가 된 변수를 생성자에서 parameter로 읽어오도록 생성 가능합니다.

Board board = new Board(2L);

@RequiredArgsConstructor
public class Board {

  private int age;
  private final Long id;
  
}

 

@AllArgsConstructor

전체 변수를 생성하는 생성자를 만들어줍니다.

Board board = new Board(1, 2L);

@AllArgsConstructor
public class Board {

  private int age;
  private final Long id;
  
}

이 어노테이션들은 이처럼 단순 객체에서 매핑시킬때 사용할 수도 있으며,

Service나 Repository의 의존성 주입을 자동으로 시켜주도록 하는데에도 사용할 수 있습니다.
이를 위해 의존성 주입이 필요한 메소드를 final로 설정해 사용하기도 합니다.
혹시나 실수로 다른곳에서 생성자를 별도로 만들어 사용하려 한다면, 싱글톤 패턴이 깨질수 있기에 이를 방지하기 위함도 있다고 합니다.