🖥️ Back/Spring

@AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor

지구용사 2024. 7. 2. 10:27

Lombok에서 제공하는 어노테이션으로 굉장히 편안하다..👍

그러던 중에 무분별하게 사용하는 것같아 이번에 정리를 해둘려한다.

 

@AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 생성

@NoArgsConstructor : 파라미터가 없는 디폴트 생성자를 생성

@RequiredArgsConstructor : final이나 @NonNull으로 선언된 필드만을 파라미터로 받는 생성자를 생성

 

아래 코드를 통해 자세히 살펴본다.

 

@AllArgsConstructor

클래스의 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성한다.

이 어노테이션을 사용하면, 클래스의 모든 필드를 한 번에 초기화할 수 있다.

@AllArgsConstructor
public class Person {
    private String name;
    private int age;
}
public class Person {
    private String name;
    private int age;
	
    public Person(String name, int age) {
    	this.name = name;
        this.age = age;
    }
}

 

 

@NoArgsConstructor

파라미터가 없는 디폴트 생성자를 자동으로 생성한다.

이 어노테이션을 사용하면 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있다.

@NoArgsConstructor
public class Person {
    private String name;
    private int age;
}
public class Person {
    private String name;
    private int age;
    
	public Person(){}
}

 

 

@RequiredArgsConstructor

final이나 @NonNull으로 선언된 필드만을 파라미터로 받는 생성자를 자동으로 생성한다.이 어노테이션을 사용하면 클래스가 의존하는 필드를 간단하게 초기화할 수 있다.

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

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