@Builder에 대해서 질문이 있습니다.
860
작성한 질문수 49
스프링 부트에서 DTO를 만들 때 @setter을 빼고 @Builder로 하는게 좋다고 들었습니다.
근데 책이랑 구글을 찾아보다 보니 두 가지의 방법으로 하는 것을 봤는데 무슨 차이인지 무엇이 더 좋은 방법인지를 모르겠어서 질문드립니다.
생성자 위에 @Builder를 사용하는 방법
@Getter //Getter 생성 public class LombokPerson { private String name; private String grade; private int age; @Builder // 생성자 만든 후 위에 @Build 어노테이션 적용 public LombokPerson(String name, String grade, int age) { this.name = name; this.grade = grade; this.age = age; }
클래스 위에 @Builder를 사용하면서 @Setter도 사용하는 방법
@ToString
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserDTO {
private String token;
private String userName;
private String password;
private String id;
}
2번째의 방법이 책에서 나온 방법인데 @Setter이 바뀔 수도 있어서 @Builder로 생성자로 받는거로 알고 있는데 여기서는 @Setter과 @Builder을 같이 쓰더라구여. 이거에 대해서 알려주세요 ㅠㅠ
답변 1
0
안녕하세요.
Lombok의 @Setter 애노테이션과 @Builder 애노테이션을 사용하시는 것 같은데요.
@Setter, @Builder 애노테이션들의 기능과 setter 메서드 대신 생성자를 통한 객체 생성의 장점은 아시는 것 같아요.
책에서 두 애노테이션을 함께 사용하는 건
클래스에서 setter 메서드(@Setter)와 빌더 패턴의 생성자(@Builder)를 함께 사용하려고 하는 듯합니다.
또는 애노테이션의 기능을 설명하기 위해서 일수도 있구요.
단순히 예제일 뿐이니 그냥 두 애노테이션을 쓰는구나 하고 넘어가셔도 될 것 같습니다.
그리고 1번과 2번에서 @Builder 애노테이션의 차이는
1번의 경우 생성자의 매개변수만 빌더 패턴으로 객체를 생성할 수 있습니다.
2번의 경우 클래스의 모든 필드에 대해 빌더 패턴으로 객체를 생성할 수 있구요.
만약 height라는 필드가 LombokPerson 클래스에 추가되면 1번의 경우 생성자까지 수정해줘야 빌더 패턴으로 height 필드에 데이터를 저장할 수 있습니다(2번의 경우 생성자 변경 없이 빌더 패턴으로 height 필드 데이터 저장이 가능합니다).
강사님.. 하단 URL에 있었던 코드들 다운 받거나 공유 부탁 드립니다..
0
4
1
노션 접근권
0
14
1
@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.
0
13
1
형 이번에 낸 책이랑 강의 내용에 차이가 있어?
1
30
1
형 나 몰래 책내면 모를 줄 알고?
1
26
1
OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
0
18
1
멀티스레드
1
19
2
N+1 관련해서 질문있습니다.
0
31
3
성능 오버헤드
1
24
2
다음 강의는 언제 올려주시는지요?
0
31
2
하단 파일이 열리지 않습니다
0
33
1
ssh-keygen -t rsa -P "" 등 ssh 암호화? 는 하둡에서 필수인가요?
0
26
2
강의 중복 확인 요청
0
22
1
volatile에 대해 질문 있습니다.
2
37
2
Mark and Sweep
1
32
1
20년 4,5회 13번
0
25
2
GC 알고리즘
1
31
2
용어 질문
1
24
1
호출횟수 질문입니다.
1
36
2
실행과정 질문입니다.
2
37
1
코딩 테스트 All-in-One(Java)' 강의 노션 교재 권한문의
0
26
1
벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?
0
27
2
중복내용 제보?!
1
48
2
태어난김에 세계일주 시간 초과
0
23
1





