메인프로젝트 비밀번호 찾기(SpringBoot)

HyunHwa Cho·2022년 9월 21일
0

오랜만에 글을 작성한다.
맨날맨날 블로깅 해야지 해야지 하다가... 드디어..

항상 공부를 하면서 생각한다. 왜 이렇게 나올까 그리고 해당 코드의 원리나 이런부분에 대한 이해도가 상당히 중요하고 원리를 이해하지 못하면 절대 응용하지 못하고 에러에 직면했을때 절대로 해결할 수 없다.

오늘은 프로젝트 중 만났던 에러와 해결방법을 한번 가져와보았다. :)

우선 오늘 문제의 코드 일부이다.

public MailDto createMailAndChangePassword(MailDto mailDto) {
        System.out.println(mailDto.getAddress());
        System.out.println(memberRepository.findByUsername(mailDto.getUsername()).getEmail());
        if(mailDto.getAddress() != memberRepository.findByUsername(mailDto.getUsername()).getEmail())
            throw new BusinessLogicException(ExceptionCode.MEMBER_NOT_FOUND);
        String str = getTempPassword();
        MailDto createMail = new MailDto();
        createMail.setUsername(mailDto.getUsername());
        createMail.setAddress(mailDto.getAddress());
        createMail.setTitle("루빗츠 임시 비밀번호 안내 이메일 입니다.");
        createMail.setMessage("안녕하세요 루빗츠 입니다." + "회원님의 임시 비밀번호는" + str + " 입니다.");
        updatePassword(str, mailDto);
        return createMail;
    }

지금 프로젝트 중인 서비스에서 비밀번호를 분실하였을 경우 email과 username(Id)로 비밀번호를 메일로 전송받는 로직 일부이며 입력한 email과 db에 저장되어있는 username의 email값이 일치하지 않을시 예외처리를 발생하도록 하는 코드이다.

  if(mailDto.getAddress() != memberRepository.findByUsername(mailDto.getUsername()).getEmail())
           throw new BusinessLogicException(ExceptionCode.MEMBER_NOT_FOUND);
           

해당부분에서 예외가 발생한다.


포스트맨에서.. username과 email을 비교했으나 예외 처리가 발생하였다.

seb15.roobits.exception.BusinessLogicException: Member not found


분명 같은 email주소를 로그로 띄우는데도 불구하고..

해당부분에대해서 고민을 해보았더니.. 조건문에서 비교하는 부분이 해당하는 email의 값은 같지만 서로다른 객체주소를 참조하여 다른게 인식하지 않을까 라고 생각되었다.

이런 앞전에.. 자바 공부할때 배운내용인데.. 메인프로젝트를 정신없이 진행하다보니 다까먹었다..

그래서 코드를 수정하여 다시테스트 해보았다.

  if(!mailDto.getAddress().equals(memberRepository.findByUsername(mailDto.getUsername()).getEmail()))
            throw new BusinessLogicException(ExceptionCode.MEMBER_NOT_FOUND);

역시나 결과는 성공 !

정상적이게 메일이 발송되는 것을 알수있었다.
항상 비교연산자를 사용할때 객체의주소를 참조하는지 객체의 값을 참조하는지에 대해서 깊게 고민하고.. 이때까지 프로젝트때 사용한 부분이 올바르게 작성되었는지 다시 다 뒤져서.. 찾아야한다..

profile
개발 공부 및 기록용 블로그 입니다.

0개의 댓글