Programming/Refactoring

@AllArgsConstructor 와 @Builder

LazyCat 2024. 12. 8. 23:17
반응형

🤍 @AllArgsConstructor

모든 필드를 파라미터로 받는 생성자를 자동으로 생성합니다.

따라서, 모든 필드를 한 번에 초기화해야 합니다.

 

@AllArgsConstructor
public class SignupRequestDto {
    private String name;
    private LocalDate birth;
    private String email;
    private String firstAddress;
    private String secondAddress;
    private String password;
}

// 모든 필드를 한번에 초기화한 객체
SignupRequestDto dto = new SignupRequestDto("레이지캣", LocalDate.of(1990, 1, 1), "lazycat@example.com", "Address1", "Address2", "password123");

 

 

 

🤍@Builder

빌더 패턴을 사용하여 객체를 생성합니다.

 

1. 유연한 객체

생성객체 생성 시 모든 필드를 한 번에 제공하지 않아도 됩니다.

2. 필드 순서 무관

초기화할 필드 순서에 구애받지 않습니다

3. 가독성 향상

코드가 더 쉽게 읽힙니다

 

@Builder
public class SignupRequestDto {
    private String name;
    private LocalDate birth;
    private String email;
    private String firstAddress;
    private String secondAddress;
    private String password;
}

// 빌더 패턴을 이용하여 객체 생성
SignupRequestDto dto = SignupRequestDto.builder()
        .name("lazycat")
        .email("lazycat@example.com")
        .password("password123")
        .build();

 

 

 

🤍내 프로젝트에 적용

 

SignupRequestDto 클래스는 모든 필드가 클라이언트로부터 들어와야 합니다.

@builder 패턴을 적용한다면 선택적으로 필드 선택이 가능하기 때문에, 개발자가 일부 필드를 누락하거나 잘못 초기화할 수 있습니다. 

 

데이터의 무결성을 위해 모든 필드를 명시적으로 초기화해야하는 @AllArgsConstructor를 사용합니다.

 

반응형