After Returning/Throwing Advice 구현하기

less than 1 minute read

image

  • 지난 시간과 동일하게 클래스명을 먼저 xml 파일에서 정의

image

  • class명을 참고해서 새로운 java 파일 생성

  • AfterReturningAdvice 인터페이스를 가져와 구현(ctrl+space를 통해 가져오기 가능)

  • 구현에 필요한 기본 틀도 생성(마우스 갖다대서 클릭하면 자동 구현)

image

  • returnValue 인자를 통해 주업무 로직에서 반환 값이 있으면 그것을 사용할 수 있음

  • method 인자를 통해 호출된 메소드에 대한 정보를 확인할 수 있음

image

  • 간단하게 확인을 위해 출력 코드 작성

image

  • 실행 결과를 보면 BeforeAdvice 내용 이후 출력된 것을 확인할 수 있음

image

  • AfterThrowingAdvice 역시 동일한 방법으로 클래스 이름을 먼저 설정

image

  • java 파일도 생성한 후 implements를 통해 ThrowsAdvice를 받음

  • 앞선 다른 Advice와는 다르게 구현해야 될 인자가 정해지지 않음

  • 예외 처리는 어떻게 해야 된다고 정할 수 있는 부분이 아니기 때문임

  • 어떠한 예외가 일어나냐에 따라 인자가 달라짐

image

  • IllegalArgumentException라는 부분의 인자가 수많은 경우의 수를 가짐

  • 여기선 Argument에 대한 exception 예제를 위해 IllegalArgumentException라고 지음

  • 원래는 before 이후 after가 불리지만 주업무 로직 실행 중 예외가 발생하면 불림

image

  • aop.entity 패키지의 NewlecExam에 정의된 함수에서 예외에 대한 처리 로직을 추가하여 예외 발생 시 예외 로직으로 빠지도록 코드 추가

image

  • 예외처리 로직을 타도록 xml 파일에서 kor 변수의 초기값을 수정

image

image

image

  • AfterThrowingAdvice 구현부에서 메시지 출력 부분을 추가하면 다음과 같이 실행됨

image

여태까진 total, avg와 같이 타겟 모두에 대해 곁다리 업무가 추가됐는데 다음 시간에는 원하는 타겟들에 대해서만 출력할 수 있도록 하는 방법을 알아볼 예정

참고 영상
Watch the video