해결된 질문
작성
·
253
·
수정됨
0
심각: 서블릿 [action]을(를) 위해 할당하던 중 예외 발생
java.lang.IllegalArgumentException: Unable to locate method [afterExceptionMethod] on bean [exampleAop]
이런 에러가 나옵니다.
package egov.lib.util;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExampleAop {
private static final Logger logger = LoggerFactory.getLogger(ExampleAop.class);
public void beforeMethod(JoinPoint joinPoint) throws Exception {
logger.info("사용자 요청" + joinPoint.getTarget());
System.out.println("사용자 요청" + joinPoint.getTarget());
}
}
영상을 보고 위 코드처럼 이용하면 문제가 생깁니다.
하지만 수업자료에서 제공하는 전체코드를 이용하면 문제가 없습니다.
package egov.lib.util;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExampleAop {
private static final Logger logger = LoggerFactory.getLogger(ExampleAop.class);
public void beforeMethod(JoinPoint joinPoint) throws Exception {
logger.info("사용자 요청" + joinPoint.getTarget());
System.out.println("사용자 요청" + joinPoint.getTarget());
}
public void afterExceptionMethod(JoinPoint joinPoint, Exception exception) throws Exception {
// 이외에도 예외처리에는 많은 방법이 존재합니다. ErrorController로 제어등..
logger.error("ST에러발생=================");
logger.error("" + exception.getMessage());
logger.error("ED에러발생=================");
throw exception;
}
public void afterMethod(JoinPoint joinPoint) throws Exception {
logger.info("메소드 종료");
}
public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {
long st = System.currentTimeMillis();
// 핵심기능 수행
Object rtn = joinPoint.proceed();
long ed = System.currentTimeMillis();
System.out.println("성능측정 걸린시간:" + (ed - st));
// currentTimeMillis:1/1000 초
return rtn;
}
}
위의 코드에서는 문제가없는데
9강 강의 마지막 내용대로 진행하면 문제가 생깁니다.
어떤 문제인지 궁금합니다.
dispatcher-servlet.xml 파일에 제공되는 코드에서
aop:after-throwing , aop:after , aop:around 코드를 주석처리를 안하고 진행해서 생긴 문제였습니다.
해결했습니다.
답변