강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của sanghwan
sanghwan

câu hỏi đã được viết

3. Khóa học phát triển web [Spring Framework + Framework chuẩn Chính phủ điện tử]

Bài học 9 AOP

9강 -1 마지막 실습

Đã giải quyết

Viết

·

308

·

Đã chỉnh sửa

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전자정부프레임워크

Câu trả lời

Câu hỏi này đang chờ câu trả lời
Hãy là người đầu tiên trả lời!
Hình ảnh hồ sơ của sanghwan
sanghwan

câu hỏi đã được viết

Đặt câu hỏi