Spring boot kim's Shop/리팩토링

Springboot 인증 시스템 리팩토링!(1) with interface

디비드킴 2021. 8. 13. 16:39

이전 글

https://cordingmonster.tistory.com/108?category=1038496 

 

Springboot Jwt+휴대폰인증!(2) 인증번호 확인

이제 인증번호가 맞는지 안 맞는지 판별해보자 프런트 js json형태로 번호/입력 전송  let data=JSON.stringify({  "phoneNum":""+document.getElementById('phoneNum').value+"",  "tempNum":""+document.ge..

cordingmonster.tistory.com

고민이 있었다 너무 비슷한 로직이었다

문자인증/전화인증 로직인데 둘 다 인증번호를 받아서 검사해주면 됐었다

그래서 떠오른 아이디어 아 이럴 때 인터페이스를 써볼까..?

하고 만들었다

 

interface

confrimInterface.java

email

emailconfrim.java

phone

phoneConfrim.java

service

confrimService.java

인터페이스를 변수로 받아서 검사한다!

 

문제의 두 개의 함수 너무 비슷했다

하나는 핸드폰으로 인증번호 검사

하나는 이메일 검사 후 임시 비밀번호 발급

그리고 여기서 하나 더 이메일 인증번호 검사

사실상 3개는 같은 로직이 엄청 들어가게 된다 

 

confrimService.java
confrimService.java

confrimDto confrimDto=confimDao.findByEmail(emailCofrimDto.getEmail());

confrimInterface confrimInterface=new emailConfrim(confrimDto);

JSONObject result=compareTempNum(confrimInterface,emailCofrimDto.getTempNum());

이 세줄의 코드로 둘의 엄청나게 겹치는 코드가 묶였다!

이전까지 인터페이스 음..? 가물가물 했었다 

이번 계기로 머리에서 번개가 치는 느낌이 났다

아..! 이렇게 할 수 있구나!

앞으로 잘 활용할 수 있을 거 같다!

 

테스트

 

email

인증시간 초과(맞는 값은 틀린 값이 든 상관없이)

테스트는 맞는 값으로 지정

재전송 후 틀린 값 입력

재전송 후 맞는 값 입력

vscdoe

 

문자

인증시간 초과(맞는 값은 틀린 값이 든 상관없이)

테스트는 맞는 값으로 지정

재전송 후 틀린 값 입력

재전송 후 맞는 값 입력

성공 하지만!

회원 가입한 번호가  존재하지 않기에

찾기->메시지 출력

 

존재한다면

번호와 일치하는 이메일 표시!

 

트랜잭셔널 어노테이션을 추가하였다!

https://cordingmonster.tistory.com/133

 

Spring boot 예외처리!(2) with Transactional

kim's cafe에이어 kim's shop을 만드는 도중 치명적인 오류가 있었다 무려 Transactional어노테이션이 먹히지 않았다.. 아예 작동하지 않았다 UPDATE문도 던지지 않고.. 근데 업데이트야 뭐 sql문을 던지면

cordingmonster.tistory.com