Spring/개념정리

AOP 실습2 (after-throwing,around 실습)

Itchild 2024. 7. 4. 13:39
728x90
반응형

after-throwing

비즈니스 메서드를 호출 했을때 , 발생하는 예외 자체를 바인딩 변수로 가져올 수 있다.

 

Exception exceptObj에서 Exception 은 모든 예외에 대한 최상위 클래스이다.(= Object와 같은 최상위 클래스)

그래서 모든 발생하는 예외 , 에러는 Exception안에 존재 한다.

Exception이라는 큰 박스 안에 바인딩 되어있다. exceptObj 자리에 올 수 있는 예외가 다양하다.

 

after-throwing 은 서비스 하기 전까지 발생하는 예외, 에러를 확인하려는 용도로 사용한다.

그래서 이미 try-catch가 되어있다면 호출되지 않는다.

Service 레이어 즉,Impl 클래스 내부에서 발생한 예외에 대하여만 어드바이스와 결합되어 로그가 호출되고

DAO, SQL ,...등등 에서는 호출 되지 않는다.

 

after-throwing 과정은 아래 링크를 참고 하기 바란다.

 

AOP (.xml 방식)

실습은 로그로 진행해볼 예정이다. 1) AOP 를 하려면 AOP 라이브러리가 필요하다. aspectj-version a...

blog.naver.com

 

이 글에서 언급하는 것은 인자를 받아서 예외처리를 한다는 다른 방법도 있어서 소개하였다.

 


자바에서 예외 클래스는 java.lang.Exception 클래스를 상속하는 구조로 되어있다.

Exception 클래스를 직접 상속하여 예외 클래스를 작성하거나,

Exception 클래스의 하위 클래스를 상속하여 구체적인 예외 클래스를 작성 할 수 있다.

 

예외 클래스는 체크 예외 (Checked Exception)언체크 예외 (Unchecked Exception) 로 나뉜다.

 

✔️ 체크 예외

 

Exception 클래스를 상속하며, RuntimeException 을 제외한 모든 예외 클래스가 해당 된다.

 

컴파일러가 체크하므로 반드시 예외 처리 코드가 필요 하다.

즉, throws 또는 try-catch 블록을 통해 처리 해야만 한다.

 

파일 입출력, 네트워크 통신, 데이터베이스 연결 등과 같이 프로그램 외부 요인에 의해,

발생 할 수 있는 예외들이 체크 예외에 속한다.

 

체크 예외의 종류로는 IOException(입출력 예외) ,SQLException (데이터베이스 SQL 예외) , ..등이 있다.

 

✔️ 언체크 예외

 

RuntimeException 클래스를 상속한 예외 클래스 이다.

 

컴파일러가 체크하지 않는다. 개발자의 주의에 의존 한다.

 

주로 프로그램 코드의 버그나, 잘못된 사용으로 인해 발생되는 예외들이 언체크 예외에 속한다.

또한 일부러 에러를 내려고 했을때 컴파일러가 체크하지 않도록 언체크 예외방식을 사용하기도 한다.

 

언체크 예외의 종류로는 NullPointerException (null 정보 반환 예외) ,

ArithmeticException(0 으로 나눌시 발생 예외),

ArrayIndexOutOfBoundsException (배열의 크기를 벗어난 예외) ,

IllegalArgumentException( 넣는값이 변수와 맞지 않는 예외) 등이 있다.

 

 


around

 

AroundAdvice 내에 StopWatch 클래스에 대해 한번 알아보자

 

AroundAdvice 는 JointPoint를 상속받은 ProceedingJointPoint 객체를 인자로 사용해야 하며

StopWatch 클래스는 Spring 프레임워크에서 기본 제공해주는 클래스 이다.

sw.start(); 시작해서

외부 비즈니스 메서드를 호출하고 기능수행이 끝나면 ,

sw.stop(); 까지의 소요된 시간을 알 수 있다.

 

 

 

728x90
반응형