인프런 커뮤니티 질문&답변

이묵이님의 프로필 이미지
이묵이

작성한 질문수

3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]

제9강 AOP

9강 -1 마지막 실습

해결된 질문

작성

·

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

해결했습니다.

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
이묵이님의 프로필 이미지
이묵이

작성한 질문수

질문하기