• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

UserEntity를 UserDto로 매핑한 후 pwd 출력에 대하여

21.05.27 17:23 작성 조회수 298

1

좋은 강의 정말 감사드립니다.

강의 10:47 무렵에..

아래 코드처럼 userEntity를 UserDto로 매핑한 결과를 디버그모드에서 값을 확인하는 부분이 있는데요.

UserDto userDto = new ModelMapper().map(userEntity, UserDto.class);

UserEntity에는 pwd가 설정되지 않았으므로  변환된 결과값인 userDto의 pwd 값은 null 이 나오는게 맞지 않을까요? 

로그인할때 pwd값이 아래의 코드에 의해 암호화 된다는 것을 설명하신부분은 이해했습니다.

auth.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder)

사실 별로 중요하지 않은 부분이라  그냥 넘어갈수도 있지만 이상해서..

pwd 값은 어디서 왔을까?  라는 생각이 들었습니다.

혹시나 해서 Mapstruct 라는 라이브러리를 사용하여 Mapping 을 시도했을때는 아래의 이미지 처럼 null이 출력되었습니다.

제가 잘못 이해한건가요?

답변 3

·

답변을 작성해보세요.

3

안녕하세요, 이도원입니다. 

ModelMapper에서 두 객체 간의 데이터를 전송하는 방식을 지정하기 위해 Matching Strategy를 지정할 수 있습니다. (http://modelmapper.org/user-manual/how-it-works/)

User Controlelr에서 사용자 등록할 때 사용되는 createUser() 메소드에서 처럼 MatchingStrategies를 지정하면 매칭 수위를 조절하실 수 있습니다. MatchingStrategies는 Loose, Standard, Strict 3가지로 지정할 수있으며, Strict가 매칭 수위를 가장 까다롭게 합니다. 예를 들어, 아래 이미지는 순서대로 Loose, Standard, Strict로 지정했을 때 UserDto의 pwd 값이 어떻게 달라지는지 보여주는 이미지입니다. (테스트를 하기 위해 UserDto에 decryptedPwd라는 필드를 추가하였습니다)

* Standard

* Loose

* Strict

정확하게 encryptedPwd만을 변환하시려면  MatchingStrategies를 MatchingStrategies.STRICT로 지정해서 사용해 보시기 바랍니다.

감사합니다. 

0

juheeya401님의 프로필

juheeya401

2022.05.17

저도 잘 참고합니다. ^^

0

서인님의 프로필

서인

2022.01.19

와 저도 pwd가 null 나와서 이상하다 생각했는데 Strict으로 진행해서 그랬어요 잘 알고 갑니다:)