1 - 3. 스프링 부트 Mapper와 Mapper 오류, Mail 전송
오늘은 회원에 관한 코드들을 스프링에서 스프링 부트로 바꾸는 작업을 진행하였습니다. 코드를 가져와서 실행을 하던 중에 mapper를 찾지 못하는 에러가 발생했습니다.
1. @Mapper 어노테이션
스프링에서 mybatis를 사용하는 방식은 SqlSession, SqlSessionTemplate을 설정하고 maper네임스페이스. id, parameter 등의 메서드를 통해 쿼리를 사용하였지만 스프링 부트, mybatis 3.0 이상에서는 sqlSessionTemplate을 설정하고, selectone 메서드를 사용하지 않고 @mapper 어노테이션을 이용해 메서드명과 xml 파일의 id를 매핑시켜 편리하게 사용할 수 있다.
mapper 인터페이스에 @Mapper 어노테이션을 붙여주니 해결되었다.
참고 블로그 : https://frozenpond.tistory.com/85
[spring] mapper 어노테이션을 통한 springboot, mybatis 세팅하기
spring boot로 프로젝트를 생성, Mybatis 연동하는 예제입니다. 스프링에서 mybatis를 사용하는 방식은 SqlSession, SqlSessionTemplate을 설정하고 selectOne(maper네임스페이스.id, parameter) 등의 메서드를 통..
frozenpond.tistory.com
2. 자바 명명규칙
진행하던 중에 프로젝트 패키지 이름이 바뀌고 클래스 이름 등 자바 명명규칙을 어긴 것들을 발견해서 경로들을 수정해주었다.
참고 블로그 : https://ozofweird.tistory.com/entry/Java-%EB%AA%85%EB%AA%85-%EA%B7%9C%EC%B9%99
왼쪽은 수정 전 오른쪽은 수정 후 사진이다.
또한 전에 진행했던 데이터 베이스 테이블들 이름이 너무 헷갈려서 명확하게 이름을 다시 지었다.
왼쪽은 수정 전 오른쪽은 수정 후 사진이다.
3. Mapper.xml (not found) 오류
유효성 검사를 실시하면 위와 같은 오류가 발생했다. 진짜 찾는데 3일 내내 찾았는데 못 찾았다. 공식문서와 수많은 블로그를 찾아봤는데 다해봤는데도 안됐다. 마지막 4일째 오류를 해결했다... 이유는 Mapper.xml 파일이 하나라도 오류가 나면 전체가 매핑에 실패해 오류가 난다.
mybatis.mapper-locations= mapper/*.xml
application.properties에 위에 코드를 추가시켜준다.
Jsp에서 Mybatis를 이용할 때 스프링 부트에서 만들어주는 resources에 mapper 밑에 Mapper.xml 파일을 추가시켜준다.
보통 Mapper를 찾지 못하는 오류는 mapper namespace의 경로가 잘못되었거나 Mapper.xml 파일의 id와 Mapper.java파일의 메서드 이름이 잘못된 오류이거나 오타이다.
4. 회원가입 인증 메일 전송
회원가입을 할 때 인증번호를 보내는 기능이 있었는데 구글 계정만 있으면 무료로 발송할 수 있는 Gmail SMTP Server를 이용했다. 메일전송은 MailSender 인터페이스를 상속받은 JavaMailSender를 사용해 구현하였습니다. 새로 스프링 부트에는 dependency와 설정이 빠져있어 오류가 발생했다.
implementation 'org.springframework.boot:spring-boot-starter-mail'
build.gradle dependencies에 위에 코드를 작성한다.
Gmail SMTP Server를 이용하려면 위와 사진과 같은 설정이 필요하다.
위의 설정은 application.properties에 추가 해줘야 한다.
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.username=gmail
spring.mail.password=password
잘되는것을 확인할 수 있다.
오늘의 회고
mapper 오류에 4일을 걸렷다ㅠㅠ 부트로 바꾸는 프로젝트를 진행하기 전에 제가 진행했던 프로젝트여서 코드 분석을 하지 않고 바로 진행했던 점이 문제로 다가왔다. 프로젝트를 끝낸지 7개월이라는 시간이 흘렀고 제가 작성하지 않은 코드들도 있어서 파악이 안되는 문제가 발생했다. 오늘 내일은 코드를 분석하는 작업을 진행하려고 합니다. 분석을 끝내고 위에 진행했던 코드들의 테스트 코드를 블로그에 작성하겠습니다.
'프로젝트 > skylife_Transformation' 카테고리의 다른 글
AWS EC2 스프링부트 SpringBoot JSP 404 Not Found Error (0) | 2022.10.13 |
---|---|
1 - 2. 스프링 부트에서 MyBatis 연결 (0) | 2022.06.02 |
1 - 1. 스프링에서 스프링 부트와 GitHub연동 (0) | 2022.05.31 |