이번 시간에는 lombok라이브러리에서 제공하는 생성자를 자동으로 생성해주는 3가지 어노테이션에 대해 알아보고자 한다. 롬북의 의미에 대해 알아보고 생성자를 생성해주는 각각의 어노테이션의 역할에 대해 알아볼 것이다.
📌lombok
◾lombok이란?
Java 의 라이브러리 중 하나로, 반복적이고 상투적인 코드를 줄이기 위한 어노테이션 기반의 라이브러리이다. 많이 사용되는 Getter/Setter나 생성자 등의 코드를 컴파일 과정에서 생성해주는 방식으로 동작하는 라이브러리이다.
개발자는 lombok의 어노테이션을 통해 간결하고 가독성 있는 코드를 작성할 수 있고, 개발의 생산성을 향상시킬 수 있다. 예를 들면 DTO와 같이 자주 변경되는 클래스의 경우 멤버 변수가 추가되거나 없어질 때마다 일일히 Getter,Setter,생성자와 같은 것을 수정해줘야 하는 경우가 발생한다. 이러한 경우도 lombok을 이용하면 단순히 프로퍼티(필드)를 추가하고 삭제하는 것만으로도 충분하다.
📌생성자 어노테이션
Lombok에서 생성자를 자동으로 생성해주는 어노테이션 3가지에 대해 알아보자.
@NoArgsConstructructor
: 매개변수가 없는 기본 생성자를 생성해준다.
@AllArgsConstructor
: 모든 필드 값을 매개변수로 받는 생성자를 만들어준다.
@RequiredArgsConstructor
: final이나 @NonNull인 필드 값만 매개변수로 받는 생성자를 만들어준다.
◾@NoArgsConstructor
· 매개변수가 없는 기본 생성자를 생성한다.
· final
필드가 있는 경우 @NoArgsConstructor(force = true)
를 사용하여 모든 final
필드를 기본값으로 초기화해야 한다.
· Hibernate 와 및 Service Provider Interface와 같은 특정 Java구조에서 필요한 무인자 생성자이다.
· DTO와 DB를 연결해서 사용할 때나 API를 호출하는 곳에서 파라미터를 DTO로 받아올 때 기본적으로 아무 인수가 없는 기본 생성자가 있어야하므로 DTO에 많이 사용된다.
어노테이션 사용 코드
@NoArgsConstructor
Public class TestClass{
}
🔻🔻🔻
자동 생성되는 생성자
public TestClass() {}
◾@RequiredArgsConstructor
· fianl
키워드가 붙은 필드 또는 @NonNull (또는 @NotNull) 어노테이션이 붙은 필드에 대한 생성자를 생성한다.
· @NonNull필드는 명시적인 null 체크를 생성한다.
어노테이션 사용 코드
@RequiredArgsConstructor
public class TestClass{
@NonNull
privatae String name;
private final int age;
}
🔻🔻🔻
자동 생성되는 생성자
public TestClass(String name, int age) {
if (name == null) {
throw new NullPointerException("name is marked @NonNull but is null");
}
this.name = name;
this.age = age;
}
◾@AllArgsConstructor
· 모든 필드에 대한 생성자를 자동으로 생성한다.
· 클래스의 모든 필드를 초기화할 때 사용된다.
어노테이션 사용 코드
@AllArgsConstructor
public class TestClass{
privatae String name;
private int age;
}
🔻🔻🔻
자동 생성되는 생성자
public TestClass(String name, int age) {
this.name = name;
this.age = age;
}
💡참고로, 이 어노테이션은 fianl키워드와 관계없이 말 그대로 '모든' 필드에 대한 생성자를 자동 생성해준다.
참고
'웹 개발 > spring' 카테고리의 다른 글
[spring] dto클래스에 Getter가 필요한 이유 (2) | 2024.02.29 |
---|---|
[lombok] 자주 사용하는 lombok 어노테이션 (0) | 2024.02.06 |