[Spring boot] 생성자 어노테이션 정리

노혁·2023년 7월 5일
1


Spring Boot 로 개발하다보면 Lombok 어노테이션을 이용하여 편리하게 개발을 할수 있어서 자주 사용한다.

생성자 어노테이션의 대해 알아보자.

생성자 어노테이션 종류

@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class Person {
    private String name;
    private int age;
    private final String address;
}

// 위 코드를 작성한 후에 컴파일러가 자동으로 생성한 코드는 아래와 같습니다.

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Person {
    private String name;
    private int age;
    private String address;
    
    // @NoArgsConstructor가 생성하는 기본 생성자
    public Person() {
    }
    
    // @AllArgsConstructor가 생성하는 모든 매개변수를 갖는 생성자
    public Person(String name, int age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }
    
    // @RequiredArgsConstructor가 생성하는 final 멤버변수를 매개변수로 갖는 생성자
    public Person(String address) {
        this.address = address;
    }
}

@NoArgsConstructor

  • 매개변수가 없는 기본 생성자를 자동으로 생성합니다. 주로 entity 클래스에서 많이 사용되며, 기본 생성자가 필요한 경우 사용됩니다.

@AllArgsConstructor

  • 클래스의 모든 필드를 매개변수로 받는 생성자를 자동으로 생성합니다. 이 어노테이션은 특별한 경우가 아니면 거의 사용되지 않습니다.

@RequiredArgsConstructor

  • 클래스에서 final로 선언된 필드를 매개변수로 받는 생성자를 자동으로 생성합니다. 이 어노테이션은 주로 의존성 주입(Dependency Injection)을 사용하는 클래스에서 사용됩니다. final로 선언된 필드에는 반드시 값이 설정되어야 하므로, 생성자에서 매개변수로 받아 초기화하는 것이 안전하다고 판단되는 경우 사용됩니다.

참고
https://chaezzing-fly-dev.tistory.com/33

profile
백엔드 개발자입니다.

0개의 댓글