아래와 같이 설정하면 Transaction의 외부에서 아래의 Aspect가 실행되기 때문에 Exception 이 발생했을 경우 rollback이 우선 처리되고 응답 메시지가 생성된다.
aspect 파일:
@Aspect()
@Order(1)
@Service("myAspect")
public class MyAspect {
@Around("execution(public com.my.IServiceResult com.my.*ServiceImpl.*(..))")
public IServiceResult handleDwrMethod(ProceedingJoinPoint joinpoint) {
try {
Object[] args = joinpoint.getArgs();
return (IServiceResult) joinpoint.proceed(args);
} catch(Throwable ex) {
return createErrorResult(ex);
}
}
}
spring 설정 파일:
<tx:annotation-driven transaction-manager="queryTxManager" order="2" />