2017. 7. 11. 11:41ㆍframework/spring
SPRING @Async를 활용한 multi thread 구현 - 4 - ExceptionHandler 생성
Spring 에서 비동기 처리를 하기 위해서 AsyncConfigurer@Asynk를 사용하려고 한다.
개발 환경은 Java 8 , Tomcat 8 , Spring 4.1 이다. |
본 포스팅은
이번 시간에는 ExceptionHandler를 만들어 보자.
먼저 ExceptionHandler 란 단순하게 말해서 예외상황 발생 시 한 곳에서 처리하겠다 라는 정도라고 생각해 놓자.
비동기로 특정 로직을 처리하다 보면 이 로직의 실행이 성공했는지 실패했는지 등을 관리할 필요가 있다.
핸들러 클래스를 만들자.
1 |
public class AsyncExceptionHandler implements AsyncUncaughtExceptionHandler { |
cs |
1# : AsyncUncaughtExceptionHandler를 상속받는 클래스를 만든다.
AsyncUncaughtExceptionHandler를 상속받게 되면 @Override를 해야 하는 함수가 있다.
handleUncaughtException 함수이다.
오류가 발생 시 해당 오류 메시지와 함수 등 정보들을 제공한다.
1
2
3
4
5
6
7
8
9
10
11
12
13 |
@Override
public void handleUncaughtException(Throwable throwable, Method method, Object... obj) {
System.out.println("==============>>>>>>>>>>>> THREAD ERROR");
System.out.println("Exception Message :: " + throwable.getMessage());
System.out.println("Method Name :: " + method.getName());
for (Object param : obj) {
System.out.println("Parameter Value :: " + param);
}
// JOB_LOG : 종료 입력
// ...
System.out.println("==============>>>>>>>>>>>> THREAD ERROR END");
} |
cs |
설명생략
핸들러 클래스를 만들었다.
가만있히 둔다고 연결이 되지 않는다.
핸들러 클래스를 연결시켜 주자
두번째 시간에 AsyncConfig 클래스를 생성할때 @Override 한 getAsyncUncaughtExceptionHandler 함수가 있다.
이 함수의 내용을 바꿔주면 된다.
1
2
3
4 |
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return new AsyncExceptionHandler();
} |
cs |
위에서 생성한 AsyncExceptionHandler 클래스를 연결시켜 준다.
이로서 스레드에서 예외상황 발생시 처리할 수 있는 handler를 만들었다.
다음 시간에는 생성한 task를 사용해보는 시간을 가져보자.
전체소스
AsyncConfig.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 |
import java.lang.reflect.Method;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
/**
* @Title : AsyncConfig Exception Handler
* @Filename : AsyncExceptionHandler.java
*/
public class AsyncExceptionHandler implements AsyncUncaughtExceptionHandler {
/**
* AsyncTask 에서 오류 발생 시 실행
*/
@Override
public void handleUncaughtException(Throwable throwable, Method method, Object... obj) {
System.out.println("==============>>>>>>>>>>>> THREAD ERROR");
System.out.println("Exception Message :: " + throwable.getMessage());
System.out.println("Method Name :: " + method.getName());
for (Object param : obj) {
System.out.println("Parameter Value :: " + param);
}
// JOB_LOG : 종료 입력
// ...
System.out.println("==============>>>>>>>>>>>> THREAD ERROR END");
}
} |
cs |
AsyncConfig.java 파일에 getAsyncUncaughtExceptionHandler 함수 변경
1
2
3
4 |
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return new AsyncExceptionHandler();
} |
cs |
'framework > spring' 카테고리의 다른 글
SPRING @Async를 활용한 multi thread 구현 - 5 - 구현 (12) | 2017.07.11 |
---|---|
SPRING @Async를 활용한 multi thread 구현 - 3 - @Async 사용 및 Task 추가 (0) | 2017.07.11 |
SPRING @Async를 활용한 multi thread 구현 - 2 - AsyncConfigurer 생성 (0) | 2017.07.11 |
SPRING @Async를 활용한 multi thread 구현 - 1 - 개요 (0) | 2017.07.11 |
spring excel csv download 하기 / super-csv jar 사용하기 / AbstractView (0) | 2017.06.30 |
Security 로그인 후 이전페이지 가기 | spring (4) | 2016.01.05 |
특정 JAVA , JSP 에서 Bean 객체 가져오기 | spring (0) | 2016.01.05 |
메일 보내기 / mail sample | spring (0) | 2016.01.05 |
vo list / form list / @ModelAttribute list / list로 받기 | spring (0) | 2016.01.05 |
@ResponseBody / ajax / 아작스 / messageConverters | spring (0) | 2016.01.05 |