Spring 특강 07

이상인·2023년 7월 21일
0

Spring AOP

@Transactional도 대표적 AOP중 하나

AOP를 사용하는 이유, '공통 로직 구현'

로깅 / 트랜잭션 처리 / 공통으로 처리해야되는 전처리 기능...

쓸 일 별로 없을 것 같고 내용이 어려움

보통 Filter / Interceptor로 처리한다
이렇게 해도 유지보수에 크게 문제가 있지는 않다.

코드는 줄어든다.

어노테이션 하나만 박아놓고 사용하고싶으면 사용

핵심기능1,2,3...

  • 부가기능 1(어드바이스) 부가기능1 적용위치(포인트컷)

API 예외처리

  • 잘 배워두면 쓰잘대기가 많다.

서비스 레이어가 하나 (익셉션이 발생할 수 있는 레이어가 하나) 일 때 핸들러나 어드바이스

  • @ExceptionHandler vs @ControllerAdvice
  • 별개의 서비스 또는 Controller단에서 처리

Exception(특히 Checked Exception)은 최대한 늦게 던지고, 빨리 잡아서 처리해야된다

핸들러를 사용하면

  • public void A (B())
    public void B (C())
    일 때
    A -> B -> C...
    C에서 발생 -> B에서도 발생
    B가 덮어씌우면 C의 익셉션을 볼 수 없음
    => 이럴 경우 C에서 catch하는게 베스트, 그 다음 B

체크드 언체크드 에러

Checked / UnChecked / Error

Checked

  • 런타임 익셉션의 하위 클래스가 아니면서 익셉션 클래스의 하위 클래스들
    반드시 에러처리를 해야한다
    • 존재하지 않는 파일의 이름을 입력
    • 실수로 클래스의 이름을 잘못 적음
      롤백 X

UnChecked

  • 런타임익셉션의 하위클래스, 에러 처리를 강제하지 않는다.
  • 실행 중에 발생할 수 있는 예외
    • 배열의 범위를 벗어난
    • 값이 null인 참조변수를 참조
  • 구동이 유지된다.
    롤백 O

Error

  • 비정상 상황
    • 메모리 부족, 스택오버플로우 등
    • 개발자가 처리할 수 있는 방법이 없다

익셉션을 만든다고 하면 대부분 extends RuntimeException 한다

변경을 가하는 경우는 왠만하면 트랜잭션을 넣어라!
@Transactional(Readonly = false)

// 과제해설

Entity를 변환없이 Dto에 그대로 데이터 셋 하는건 괜찮다
Model - DAO

authResult에 대한 검증? 을 해줘야된다

베어럴프릭스로 시작하는지 체크

제대로 변환이 되었는가, 널체크

API 로그인을 호출하면 어덴티케이션 필터를 통할까?
= No
Once 어쩌구 필터에서 처리

getUserIfoFromToken 단일책임원칙을 많이 벗어남
검증 추출 유저인포
3개로 나눠라 인증 해석 추출

나눠라


token 탈취 대비 만료시간 짧게
refresh-token으로 재발급

상속

  • 코드변경여지x 재사용성이 높은 경우

처음부터 인터페이스로 만들어라.

0개의 댓글

관련 채용 정보