[웹개발 101] 롬복 어노테이션 정리 :: @Builder / @NoArgsConstructor / @AllArgsConstructor / @Data
지금은 <React.js 스프링부트, AWS로 배우는 웹개발 101 2/e> 2장 백엔드 개발을 공부중이다.
롬복을 이번에 처음 사용해봤는데 기본적인 어노테이션을 정리해두면 좋을 것 같아서 글을 남긴다.
먼저 어노테이션과 관련한 롬복 공식문서 주소다.
https://projectlombok.org/features/
Stable
projectlombok.org

교재에서 사용한 어노테이션은 총 네 가지다.
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
지금부터 하나씩 간단하게 메모하겠다. 추가 내용이 있다면 나중에 수정될수도..
@Builder : 객체 생성을 위한 디자인 패턴 중 하나
공식문서를 살펴보면 '@Builder 어노테이션은 복잡한 Builder APIs를 제공해준다', '@Builder를 사용하면 클래스를 다음과 같은 코드로 인스턴스화하는 데 필요한 코드를 자동으로 생성해준다.'고 되어있다.
Person.builder()
.name("name")
.userId("choi")
.title("Implement Model")
.build();
이렇게 Builder 패턴을 사용하는 것은 생성자를 사용해 객체를 생성하는 것과 비슷하다. 생성자를 이용하는 것과 비교해 장점이 있다면 생성자 매개변수의 순서를 기억할 필요가 없다는 점이다.
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstrucgor 이 3개의 어노테이션은 특정 필드에 대해 매개 변수를 허용하는 생성자를 생성하고 이 매개 변수를 필드에 할당한다.
@NoArgsConstructor : 매개변수가 없는 생성자 구현
공식문서에 따르면 @NoArgsConstructor 어노테이션은 매개변수가 없는 생성자, 즉 기본 생성자를 구현한다.
@NoArgsConstructor를 사용하는 것은 아래와 같은 생성자를 구현하는 것이다.
Public TodoEntity(){
}
@AllArgsConstructor : 클래스의 모든 멤버 변수를 매개변수로 받는 생성자 구현
공식문서에는 클래스 내부에 있는 각각의 필드마다 하나의 매개변수를 생성한다고 되어있다. @AllArgsConstructor를 사용하는 것은 아래와 같은 생성자를 구현하는 것이다.
Public TodoEntity(String id, String userId, String title, boolean done) {
super();
this.id = id;
this.userId = userId;
this.title = title;
this.done = done;
}
@Data : 클래스 멤버 변수의 Getter/Setter 메서드 구현, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 포함
공식문서에 따르면 @Data 어노테이션은 Getter, Setter 메서드를 구현할 뿐 아니라 @ToString, @EqualsAndHashCode, @RequiredArgsConstructor도 포함하고 있어 @Data 어노테이션이 선언된 클래스에서 해당 어노테이션들을 모두 사용할 수 있다.
롬복이 생성하는 Gatter, Setter만 살펴보겠다.
Public String getId(){
return id;
}
Public void SetId(String id){
return this.id = id;
}
Public String getUserId(){
return userId;
}
Public void SetUserId(String userId){
return this.userId = userId;
}
Public String getTitle(){
return title;
}
Public void SetTitle(String Title){
return this.title = title;
}
Public boolean isDone(){
return done;
}
Public void SetDone(boolean done){
return this.done = done;
}
-- 사담
알고 쓰는 것과 모르고 쓰는 것에는 확실히 차이가 있을 것이다. 롬복의 단점 중 하나가 롬복을 모르는 개발자와 협업할 때 커뮤니케이션이 힘들 수 있다는 것인데, 어떤 어노테이션이 무엇을 구현해주는지 안다면 그러한 단점을 보완할 수 있게 되지 않을까.
| [스프링부트 핵심가이드] ORM, JPA, 하이버네이트 개념 (0) | 2023.02.22 |
|---|---|
| [S.A혼구웹 ] JPA 이모저모 (0) | 2023.01.24 |
| [S.A혼구웹 / Test] Junit5 사용해보기 (0) | 2023.01.23 |
| [웹개발101] CORS 에러 (0) | 2023.01.16 |