[Spring] 회원가입과 유효성 검사 AOP / 나만의 Exception 만들기

·2024년 9월 19일

회원가입과 유효성 검사 AOP

📄 AOP 란?

애플리케이션의 공통 관심사를 분리하여 모듈화하는 프로그래밍 기법이다. 주로 로깅, 트랜잭션 관리, 보안, 에러 처리와 같은 기능을 분리하여 깔끔하게 한곳에서 사용할 수 있다.


📄 @Valid, BindingResult, AOP 사용하기 코드 정리

  • 컨트롤러에서 @Valid 어노테이션을 붙이면, BindingResult 로 에러들을 다 받아준다.

  • 그럼 RequestDto 에 걸어둔 제약조건들이 어겨질 경우 BindingResult 에 에러들이 저장된다.

  • handler/aop 패키지에서 해당 유효성 검사 로직을 CustomValidationAdvice라는 클래스에 aop의 advice로 뽑아준다.

  • 먼저 Pointcut으로 유효성 검사를 사용할 메서드를 정의해준다.

  • 그리고 유효성 검사에 BindingResult 가 있을 때 에러가 있으면 유효성 검사 실패 오류를 throw한다.


📄 유효성 검사 참고 정규 표현식 간단 정리 (실제 적용할 땐 더 자세하게 해야한다)

  • [a-zA-Z] : 알파벳 모두
  • [0-9] : 숫자
  • 문자 클래스 안에 ^ 메타 문자를 사용할 경우에는 반대라는 의미를 가짐.
    -> ex) [^0-9] : 숫자가 아닌 것
  • ^hello : hello로 시작하는 것
  • hello$ : hello로 끝나는 것
  • * : 바로 직전에 있는 문자가 포함되지 않거나 반복될 수 있음
  • + : 바로 직전에 있는 문자가 반드시 포함되거나 반복될 수 있음
  • {m} : 바로 직전에 있는 문자 m번 반복
  • {m,} : 바로 직전에 있는 문자 m번 이상 반복
  • {,n} : 바로 직전에 있는 문자 n 이하로 반복
  • {m,n} : 바로 직전에 있는 문자 m개에서 n개 까지만 가능함.


나만의 Exception 만들기

📄 일반 클래스에서의 예외 처리

서버단에서 터지는 예외가 프론트단에게 그 모습 그대로 넘어가지 않도록 예쁘게 처리를 해줘야한다. 즉, 예외를 내가 직접 컨트롤할 수 있어야한다.

  • ex 패키지 밑에 CustomApiException 클래스를 생성 후 message를 받도록한다.

  • 그리고 해당 Exception 클래스를 handler 패키지 밑에 CustomExceptionHandler 에러 핸들러 클래스 안에 @RestControllerAdvice 와 함께 등록해준다.

  • 그럼 에러 핸들러 클래스에 등록해줄 때 설정한 HTTP.status로 메시지를 자유롭게 넣어서 핸들링 할 수 있다.

  • 실제로 처리해준 에러가 터졌을 때 json 형태 msg가 잘 나오는걸 볼 수 있다.

+) 참고로 핸들러 클래스에서 사용하는 ResponseDto 내부는

이렇게 설정해두었다.

📄 SecurityConfig 에서 Exception 가로채기

실패와 성공 시 응답을 해주고 싶을 때가 있다.
그래서 util 패키지 아래에 CustomResponseUtil 클래스를 생성하고 실패와 성공 시 응답을 각각 json으로 예쁘게 만들어준다.

  • 성공 시에는 data에 응답을 넣어 반환한다. 실패 시에는 에러 메시지를 넣어 반환한다.

  • 실제로 이렇게 사용할 수 있다. 위 (실패 케이스) 아래 (성공 케이스)

profile
꾸준히 성장하자!

0개의 댓글