강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

sanghwan のプロフィール画像
sanghwan

投稿した質問数

3. Web 開発コース [Spring Framework + 電子政府標準フレームワーク]

レッスン9 AOP

9강 -1 마지막 실습

解決済みの質問

作成

·

307

·

編集済み

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

해결했습니다.

spring전자정부프레임워크

回答

回答を待っている質問です
最初の回答を残してください!
sanghwan のプロフィール画像
sanghwan

投稿した質問数

質問する