inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

@Builder에 대해서 질문이 있습니다.

872

유요한

작성한 질문수 49

0

스프링 부트에서 DTO를 만들 때 @setter을 빼고 @Builder로 하는게 좋다고 들었습니다.

근데 책이랑 구글을 찾아보다 보니 두 가지의 방법으로 하는 것을 봤는데 무슨 차이인지 무엇이 더 좋은 방법인지를 모르겠어서 질문드립니다.

 

  1. 생성자 위에 @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;
    	}

 

  1. 클래스 위에 @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을 같이 쓰더라구여. 이거에 대해서 알려주세요 ㅠㅠ

java springboot @builder

답변 1

0

0xe82de

안녕하세요.

Lombok의 @Setter 애노테이션과 @Builder 애노테이션을 사용하시는 것 같은데요.

 

@Setter, @Builder 애노테이션들의 기능setter 메서드 대신 생성자를 통한 객체 생성의 장점은 아시는 것 같아요.

책에서 두 애노테이션을 함께 사용하는 건

  • 클래스에서 setter 메서드(@Setter)와 빌더 패턴의 생성자(@Builder)를 함께 사용하려고 하는 듯합니다.

  • 또는 애노테이션의 기능을 설명하기 위해서 일수도 있구요.

  • 단순히 예제일 뿐이니 그냥 두 애노테이션을 쓰는구나 하고 넘어가셔도 될 것 같습니다.

 

그리고 1번과 2번에서 @Builder 애노테이션의 차이는

  • 1번의 경우 생성자의 매개변수만 빌더 패턴으로 객체를 생성할 수 있습니다.

  • 2번의 경우 클래스의 모든 필드에 대해 빌더 패턴으로 객체를 생성할 수 있구요.

  • 만약 height라는 필드가 LombokPerson 클래스에 추가되면 1번의 경우 생성자까지 수정해줘야 빌더 패턴으로 height 필드에 데이터를 저장할 수 있습니다(2번의 경우 생성자 변경 없이 빌더 패턴으로 height 필드 데이터 저장이 가능합니다).

build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)

0

15

1

예외처리 3강 문의

0

17

1

챌린지 시작일 문의

0

24

0

26년2회 실기기출은 언제쯤...

0

40

2

진짜화면이랑달라서못해먹겟어요먹겟어요

0

51

1

네이버 API | '검색 - 책' API 제공 중단

0

37

2

ArticleReadService 관련 질문

0

26

1

kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.

1

64

1

이론 공부법 요약본 버전 업데이트 문의

0

35

2

domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다

1

45

1

해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.

0

23

1

Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.

0

44

2

테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.

0

29

1

Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면

1

72

1

리뉴얼 시기

0

45

2

스크립트에 대해 질문 있습니다.

1

58

1

같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!

2

71

1

조건 검색 질문

0

40

1

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

54

3

클로드코드 명령어-대화&세션관리 수업 자료

0

40

1

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

56

2

PlatformTransactionManager, ResourcelessTransactionManager 질문

1

65

2

자료 한번에 다운받기

0

33

1

스프링 빈 등록 방법 2가지 다 알아야하는 이유

0

58

1