• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    해결됨

9강 -1 마지막 실습

24.02.20 10:26 작성 24.02.20 11:07 수정 조회수 141

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 코드를 주석처리를 안하고 진행해서 생긴 문제였습니다.

해결했습니다.

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!