내일배움캠프 70일차
오늘은 팔로우 기능을 마무리 하고 이메일 인증 기능을 본격적으로 구현하기 시작했다.
참고한 블로그: https://terianp.tistory.com/119
Spring Boot - 회원가입 시 인증 메일 발송(feat.네이버 이메일 연결)
오늘은 학원에서 파이널 프로젝트때 사용했던 사이트 회원 가입 시 인증 메일을 발송하는 부분을 정리해볼까 한다. 당연히 SpringBoot 를 사용하였고, Gradle 을 사용해서 라이브러를 import 하였다.
terianp.tistory.com
문제1
메일 인증 기능의 서비스 부분을 작성하고 있는데, MimeMessage message = emailsender.createMessage(); 부분에서 에러가 났다.
에러 메세지: Incompatible types. Found: 'jakarta.mail.internet.MimeMessage', required: 'javax.mail.internet.MimeMessage'
아마 emailsender가 잘못된 패키지를 참조하고 있어서 생긴 문제 같다.
build.gradle의 dependencies에서 spring-boot-starter-mail의 버전을 바꾸어 댄 것이 원인으로 보이는데, emailsender.createMessage()에 ctrl을 누르고 들어가 보면 library source does not match the bytecode for class javaMailSender라는 메세지만 뜨고 어떤 해결책도 나오지 않는다.
(추가) 좀 더 이것저것 시도해 보다 알게 되었는데 spring-boot-starter-mail의 버전명을 쓰지 않았을 때와 spring-boot-starter-mail를 아예 작성하지 않았을 때의 결과가 같았다.
결국 spring-boot-starter-mail 버전 변경 말고 library source does not match the bytecode for class javaMailSender에 집중해서 해결해야 할 것 같다.
팀장님과 이것저것 해결방법을 모색하다가 spring-boot-starter-mail이 이미 dependencies에 있는 것을 깨달았다... 충격... 같은 기능을 두 번 사용하니 거기서도 뭔가 문제가 발생했던 것 같다. 그 부분과 임포트할 패키지들을 수정하니 발생했던 에러가 사라졌다!
다만 이메일 인증 기능은 아직 잘 작동하지 않고 있다...
기술면접
질문: 브라우저의 작동방식에 대해서 설명해주세요.
답변: 주소창에 URL 혹은 도메인을 입력하면 브라우저는 해당 주소의 필요한 자원(웹 페이지)를 웹 서버에 요청합니다. 웹 서버는 브라우저에게 해당 웹 페이지의 자원을 보냅니다. 브라우저는 렌더링 엔진을 통해 웹 서버로부터 html, css 등의 자원을 응답받으면 렌더링 엔진의 파서에 의해 파싱되어 DOM, CSSOM 트리로 변환되고 랜더 트리로 결합합니다. 이렇게 생성된 렌더 트리를 기반으로 브라우저는 웹 페이지를 나타냅니다.