강의

멘토링

로드맵

Inflearn brand logo image

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

임정훈님의 프로필 이미지
임정훈

작성한 질문수

스프링 AOP 오류입니다.

작성

·

26

0

좋은 강의 감사 드립니다.

AOP 수업을 듣고 있는데 애노테이션 기반으로 설정 작업을 하였는데 마지막에 AfterReturning 애노테이션에서 BoardServiceClient 클래스를 실행을 하면 LogAdvice 클래스의 args[0] 여기서 오류가 납니다.

수업 동영상과 같이 진행을 하였는데 오류가 나네요. 소스 코드를 화면 캡쳐를 해서 올려 드립니다.
확인해 보시고 어디가 잘못 되었는지 답변 부탁 드립니다

afterreturning_01.jpg.webp

 

afterreturning_02.jpg.webp

 

afterreturning_03.jpg.webp

 

afterreturning_04.jpg.webp

.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
임정훈님, Spring AOP에서 AfterReturning 애노테이션을 사용하실 때 LogAdvice 클래스의 args[0] 부분에서 오류가 발생한다고 하셨군요.

The image shows a Java error message and a stack trace. It details an `ArrayIndexOutOfBoundsException` occurring in the `main` thread. The exception occurs in the `printLog` method of the `LogAdvice` class. The stack trace lists multiple method calls leading to the error, involving Java reflection and Spring AOP framework methods. There are also some log messages in Korean indicating the context around the error, such as JDBC operations and time taken for a method.

해당 오류의 주된 원인은 메서드의 인자 배열 args를 참조할 때 인덱스가 잘못되었기 때문입니다. ArrayIndexOutOfBoundsException 오류는 args 배열에 요소가 없거나 인덱스 범위를 초과할 때 발생합니다.

해결 방안은 다음과 같습니다:
1. pointcut 정의를 확인하여 실제 호출되는 메서드가 파라미터를 가지고 있는지 체크합니다.
2. printLog 메서드에서 args 배열의 길이를 먼저 확인하여 배열 인덱스 오류를 방지할 수 있도록 수정합니다.

예를 들어:

if (args.length > 0) {
    // args[0] 접근
}

이와 같은 방법으로 오류를 해결할 수 있을 것입니다. 스프링의 AOP 기능을 잘 활용하시길 바랍니다. 추가적인 문제가 있다면 언제든지 문의해주세요.

임정훈님의 프로필 이미지
임정훈
질문자

감사합니다.

해결이 되었습니다.

임정훈님의 프로필 이미지
임정훈

작성한 질문수

질문하기