🍀Spring/기타

@All/NoArgsConstructor, @RequiredArgsConstructor

말동말동현 2024. 7. 23. 11:33

https://velog.io/@sunnamgung8/%EC%9E%90%EB%B0%94-%EC%83%9D%EC%84%B1%EC%9E%90Constructor

 

[자바] 생성자(Constructor)

생성자란 new 연산자에 의해서 단 한 번 호출되는 단위입니다. 우리는 그 동안 생성자를 따로 정의하지 않았습니다. 하지만 객체는 new 연산자에 의해서 무조건 단 한 번 호출됩니다. 우리가 그 동

velog.io

 

 

  • NoArgsConstructor : 파라미터가 없는 디폴트 생성자를 생성
  • @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 생성
  • @RequiredArgsConstructor : final이나 @NonNull으로 선언된 필드만을 파라미터로 받는 생성자를 생성

 

@NoArgsConstructor

@NoArgsConstructor 어노테이션은 파라미터가 없는 디폴트 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있다.

@NoArgsConstructor
public class Person {
    private String name;
    private int age;
    // getters and setters
}

 

위 코드는 다음과 같다.

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

 

 

 

@AllArgsConstructor

@AllArgsConstructor 어노테이션은 클래스의 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스의 모든 필드를 한 번에 초기화할 수 있다.

@AllArgsConstructor
public class Person {
    private String name;
    private int age;
    // getters and setters
}

위 코드는 다음과 같다.

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

 

 

@RequiredArgsConstructor

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

@RequiredArgsConstructor
public class Person {
    private final String name;
    private final int age;
    private String address;
    // getters and setters
}

위 코드는 다음과 같아진다.

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;
    }
}

 

 

 

 

Reference

https://velog.io/@code-10/%EB%A1%AC%EB%B3%B5-AllNoArgsConstructor-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%95%8C%EA%B3%A0-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EC%9E%90

 

롬복 @All/NoArgsConstructor 제대로 알고 사용해보자.

문득 전 회사 레거시 코드를 생각하다가 @AllArgsConstructor, @NoArgsConstructor 등 여러 어노테이션이 한클래스에 같이 작성되어있는 것을 본적이있다.Lombok은 불필요한 코드와 작업을 줄여주는 좋은 라

velog.io