| AOP ( Aspect Oriented Programming )
아래 글 참조
2020/07/03 - [Spring] AOP, Interceptor, Filter
| Exception 과 LeaveaTrace
Exception 을 발생한다는 것은 프리젠테이션 계층 말 그대로 사용자 인터페이스까지 Exception 을 던지겠다는 의도이다. 하지만 Exception 을 던지지 않고 Exception 후처리 로직처럼 수행후 계속 비즈니스로 돌아오는 방법도 필요할 것이다.
이것을 위해 leaveaTrace 메소드 가 존재한다. 파라미터로 존재하는 것은 메세지 키이다.
public CategoryVO selectCategory(CategoryVO vo) throws Exception {
CategoryVO resultVO = categoryDAO.selectCategory(vo);
try {
//강제로 발생한 ArithmeticException
int i = 1 / 0;
} catch (ArithmeticException athex) {
//Exception 을 발생하지 않고 후처리 로직 실행.
leaveaTrace("message.trace.msg");
}
return resultVO;
}
앞에서 언급했던 Exception 후처리 방식과 Exception 이 아니지만 후처리 로직(leavaTrace)을 실행할 하는 방식이다
간략하게 Exception 후처리 방식은
AOP(pointCut ⇒ after-throw) ⇒ ExceptionTransfer.transfer() ⇒ ExceptionHandlerService ⇒ Handler
순으로 실행된다.
LeaveaTrace 는 AOP를 이용하는 구조는 아니고 Exception 을 발생하지도 않는다.
단지 후처리 로직을 실행하도록 하고자 함에 목적이 있다.
실행 순서는
LeaveaTrace ⇒ TraceHandlerService ⇒ Handler 순으로 실행한다.
즉, LeaveaTrace 는 Exeption 발생시 Exception을 발생하지 않으면서 후처리(Handler) 로직에 들어간다.
bean 설정만 되어있으면 호출하여 사용 가능
* 아래 공식문서 참조
출처 :
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:let:configration
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:bsl:exception_handling
'개발 > Spring' 카테고리의 다른 글
[Spring] 컴포넌트 ( Component ) 란 ? (0) | 2020.07.06 |
---|---|
[Spring] Quartz 란 ( Quartz Scheduler ) (0) | 2020.07.06 |
[Spring] 스프링 트랜잭션 ( Transaction ) - 2 (0) | 2020.07.03 |
[Spring] 스프링 트랜잭션 ( Transaction ) - 1 (0) | 2020.07.03 |
[Spring] AOP, Interceptor, Filter (0) | 2020.07.03 |
댓글