[ LOMBOK ] @Build, @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor

2022. 12. 8. 21:26ETC

반응형

@AllArgsConstructor

@NoArgsConstructor

@RequiredArgsConstructor

위 3개의 Annotation은 생성자에 관한 것입니다!

 

( 주의 : @NotNull이 아니라 @NonNull입니다! )

해당 DTO를 예제로 설명하겠습니다!

@NoArgsConstructor
파라미터가 없는 기본 생성자 생성
@AllArgsConstructor
모든 필드 값을 파라미터로 받는 생성자 생성
@RequiredArgsConstructor
final이나 @NotNull인 필드 값만 파라미터로 받는 생성자 생성

여기서 문제가 하나 있습니다.

@AllArgsConstructor를 보시면 DTO에 선언한 순서로 값을 할당해줬죠?

DTO

필드의 Type이 같은 해당 DTO에서 예시를 들어보겠습니다.

옳게 적음
잘못 적용

이렇게 실수로 값을 넣었을 때 오류를 뱉지도 않고

엉뚱한 곳에 엉뚱한 값이 들어가겠죠?

 

지금은 2개밖에 없지만

10개... 20개...

이렇게 많아진다면??

일일이 DTO에 들어가서 확인하고 작성하고 해야겠죠...

 

이제 그 부분을 보안할 방법을 알려드릴게요!

바로 @Builder Annotation을 사용할 겁니다~~

 

해당 Annotation에 커서를 올리면

이렇게 알아서 코드를 작성해준다고 하네요!

 

Builder Pattern을 적용해보면

Builder Pattern

짜자잔!!!!

순서를 맞출 필요도 없고

되게 예쁘게 생기지 않았나요??

 

간단하게 설명하자면

기본 생성자는 New를 사용하지만

Builder Pattern은 New를 사용하지 않습니다.

.builder()는 "나 이제 시작해!"

.build() "나 끝났어!"

라고 생각하시면 됩니다~

반응형