본문 바로가기
Framekwork/SPRING

[스프링부트] 자주 사용하는 애노테이션 (Annotation) @NoArgsConstructor , @AllArgsConstructor , @RequiredArgsConstructor

by 아이엠제니 2024. 3. 1.


 

 

 

처음에 스프링부트 관련 실습을 했을 때?

비슷한 듯, 비슷하지 않은 애노테이션을 보면서 "뭘까?"라는 생각이 든 적이 있다.

그것은 바로!

 

  • @NoArgsConstructor
  • @AllArgsConstructor
  • @RequiredArgsConstructor

 

이다.

자바 실습을 할 때는 일일이 입력해 주던 것들을 lombok의 기능을 사용함으로 인해!

노동력을 줄여주는 고마운 이 애노테이션들은, 실제 프로젝트 코드에서도 정말 많이 사용되고 있는 것 같았다.

이번 기회에 간단하게 정리하고 간다.

 

 

 


@NoArgrsConstructor

  • Lombok에서 제공함
  • 클래스에 기본 생성자를 자동으로 생성해주는 역할을 함
  • 기본 생성자는 매개변수가 없는 public 생성자임
import lombok.NoArgsConstructor;

@NoArgsConstructor
public class UserDTO {
  private String name;
  private int age;

}

 

만약 해당 애노테이션을 사용하지 않는다면, 아래와 같이 일일이 작성해야 할 것이다.

public class UserDTO {
  private String name;
  private int age;
  
  // 기본 생성자
  public UserDTO() {
    this.name = "gildong";
    this.age = "20";
  }
}

 

 

 


@AllArgsConstructor

  • Lombok에서 제공함
  • 모든 필드를 매개변수로 받는 생성자를 자동으로 생성함
  • 객체를 생성할 때 모든 필드를 초기화하는 생성자를 생성
import lombok.AllArgsConstructor;

@AllArgsConstructor
public class UserDTO {
  private String name;
  private String age;
  
}

애노테이션을 사용하지 않은 경우에는 아래와 같이 작성을 해야할 것이다.

public class UserDTO {
  private String name;
  private int age;

  public UserDTO (String name, int age) {
    this.name = name;
    this.age = age;
  }
}

 

 

 


@RequiredArgsConstructor

  • Lombok에서 제공
  • 생성자 자동 생성 도구
  • null이 아니고, final로 선언되어 있는 경우에 대한 생성자를 생성
import lombok.RequiredArgsConstructor;

@Controller
@RequiredArgsConstructor
public Class UserController {
  private final UserService userService;
  
}

아직 프로젝트 경험은 많이 없지만, 내가 봤을 때 @RequiredArgsConstructor는 컨트롤러에서 많이 볼 수 있는 것 같다.

물론 생성자 주입이 필요한 곳이라면 많이 볼 수 있는 애노테이션이다.

그 외에 service단에서 repositry 를 생성자 주입해야 할 때도 볼 수 있는 애노테이션이다.

자주 사용하고, 자주 보게 되니 눈에도 익은 애노테이션이라고 할 수 있겠다.

 

 

 

300x250