작성
·
26
0
좋은 강의 감사 드립니다.
AOP 수업을 듣고 있는데 애노테이션 기반으로 설정 작업을 하였는데 마지막에 AfterReturning 애노테이션에서 BoardServiceClient 클래스를 실행을 하면 LogAdvice 클래스의 args[0] 여기서 오류가 납니다.
수업 동영상과 같이 진행을 하였는데 오류가 나네요. 소스 코드를 화면 캡쳐를 해서 올려 드립니다.
확인해 보시고 어디가 잘못 되었는지 답변 부탁 드립니다
.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
임정훈님, Spring AOP에서 AfterReturning
애노테이션을 사용하실 때 LogAdvice
클래스의 args[0]
부분에서 오류가 발생한다고 하셨군요.
해당 오류의 주된 원인은 메서드의 인자 배열 args
를 참조할 때 인덱스가 잘못되었기 때문입니다. ArrayIndexOutOfBoundsException
오류는 args
배열에 요소가 없거나 인덱스 범위를 초과할 때 발생합니다.
해결 방안은 다음과 같습니다:
1. pointcut
정의를 확인하여 실제 호출되는 메서드가 파라미터를 가지고 있는지 체크합니다.
2. printLog
메서드에서 args
배열의 길이를 먼저 확인하여 배열 인덱스 오류를 방지할 수 있도록 수정합니다.
예를 들어:
if (args.length > 0) {
// args[0] 접근
}
이와 같은 방법으로 오류를 해결할 수 있을 것입니다. 스프링의 AOP 기능을 잘 활용하시길 바랍니다. 추가적인 문제가 있다면 언제든지 문의해주세요.
감사합니다.
해결이 되었습니다.