Spring/@annotation

@NoArgsConstructor vs @AllArgsConstructor vs @RequiredArgsConstructor

melitina 2024. 5. 27. 18:49

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

 

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



access 옵션엔 다음과 같은 접근제어자가 있다.

PUBLIC: 기본값이며, 모든 클래스에서 생성자에 접근 가능
PROTECTED: 같은 패키지의 클래스와 상속받은 클래스에서 생성자에 접근 가능
PACKAGE: 같은 패키지의 클래스에서 생성자에 접근 가능
PRIVATE: 해당 클래스 내부에서만 생성자에 접근 가능
이 외에도 NONE과 MODULE 접근 제어자가 있지만, 일반적으로 사용하지 않는다.

'Spring > @annotation' 카테고리의 다른 글

@CreatedDate vs @LastModifiedDate  (0) 2024.05.27
@EnableJpaAuditing  (0) 2024.05.27
@Vaild  (0) 2024.01.21
@Resource  (1) 2024.01.21
@OneToOne  (0) 2024.01.16