오늘의 학습 키워드
▸ 오늘의 코드카타
▸ UserDetailsImpl과 User
▸ Builder 패턴
▼ 오늘의 코드카타
✅ UserDetailsImpl과 User
- 위의 TIL에서 UserDetailsImpl을 넘겨주는 것과 User Entity를 넘겨주는 것의 차이에 대해 의문을 남기고 글을 마무리 했었다.
- 찾아본 결과, User를 넘겨주는 것이 더 좋다는 것을 알게되었다.
- Controller 단에서 Service 단으로 User를 넘겨줘야할 때 UserDetailsImpl이 아니라 User를 넘겨주어야 한다.
- 왜냐하면, 최대한 좁은 scpoe, 필요한 것들만 넘기는 것이 좋기 때문이다.
- UserDetailsImpl 안에 User가 있기 때문에 User를 넘겨주는 것이 좋다.
- 또한, UserDetailsImpl을 넘겨준다면 테스트 코드를 짤 때, mocking 해야하기 때문에 어려움이 있다.
✅ Builder 패턴
- Builder 패턴의 장점
- 필요한 데이터만 설정할 수 있다.
- 유연성을 확보할 수 있다.
- 가독성을 높힐 수 있다.
- 변경 가능성을 최소화할 수 있다.
- 사용법
- Builder 패턴을 사용하는 방법 중 하나는 바로 lombok의 @Builder 어노테이션을 사용하는 것이다.
- Builder 패턴을 사용하고자 하는 객체에 @Builder를 달아준다.
- 예시
@Builder
public class User {
private String username;
private String nickname;
private String password;
}
- 위와 같이 객체에 @Builder가 달려있다면 아래와 같이 사용하면 된다.
User user = User.builder()
.username("username")
.nickname("nickname")
.password("12345")
.build();