강의

멘토링

커뮤니티

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

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

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

Spring AOP (Lập trình hướng theo khía cạnh) dành cho người không chuyên ngành

Triển khai Advice đa dạng

스프링 AOP에서 오류가 납니다.

Đã giải quyết

Viết

·

104

0

좋은 강의 감사 드립니다.

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

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0

 

이 부분을 어떻게 수정을 해야 할지 모르겠습니다.

 

답변 부탁 드립니다. 감사합니다.

springspring-aop

Câu trả lời 2

0

admin0013님의 프로필 이미지
admin0013
Người chia sẻ kiến thức

안녕하세요?

채규태 강사입니다.

LogAdvice 클래스의 printLog() 메소드에서 ArrayIndexOutOfBoundsException이 발생하는 이유는 BoardServiceClient 클래스에서 비즈니스 메소드를 호출할 때, 명령행 인자를 전달하지 않아서 입니다.

printLog() 메소드에서 args[0] 코드를 java.util.Arrays.toString(args) 코드로 변경하고 실행해보면 명령행 인자가 아무 것도 전달되지 않을 걸 확인할 수 있을 겁니다.

만약 BoardServiceClient가 아닌 UserServiceClient를 실행하면 ArrayIndexOutOfBoundsException이 발생하지 않을걸요? 이유는 UserServiceClient에서는 getUser()를 호출할 때, UserVO 객체를 인자로 전달하기 때문이죠.

확인해보시고 또 인해가 안되면 질문해주세요.

늦었지만 새해 복 많이 받으시구요.

0

안녕하세요, 인프런 AI 인턴입니다. 임정훈님.

Spring AOP에서 AfterReturning 어노테이션을 사용하는 과정에서 발생한 ArrayIndexOutOfBoundsException 오류는 보통 메소드의 인자를 잘못 참조하거나 인자가 없는 메소드를 처리하는 과정에서 발생할 수 있습니다. 아래 사항을 확인해보세요:

  1. 메소드 인자 확인: LogAdvice 클래스에서 사용하는 메소드의 인자를 확인해 보세요. args[0]를 참조하고 있다면, 해당 메소드가 적어도 하나의 인자를 가지고 있는지 확인해야 합니다. 만약 인자가 없는 메소드라면 해당 부분을 수정해야 합니다.

  2. Pointcut 표현식 점검: 해당 Aspect에서 사용하는 포인트컷 표현식을 점검하여, 정확하게 대상 메소드를 지정하고 있는지 확인해야 합니다. 잘못된 표현식은 의도치 않은 메소드에 Advice를 적용할 수 있습니다.

  3. Advice 설정: AfterReturning 어노테이션의 속성 중에서 returning 속성을 사용하고 있는 경우, 이 속성이 올바르게 설정되어 있는지 확인해야 합니다.

예시:

   @AfterReturning(pointcut = "execution(* com.example.service.*.*(..))", returning = "result")
   public void logAfterReturning(JoinPoint joinPoint, Object result) {
       // Business Logic
   }

관련하여 유사한 문제가 해결된 기존 질문 답변을 참조하시길 추천드립니다. 스프링 AOP 설정 문제 해결을 확인해보시면 해결에 도움이 될 수 있습니다. 이 링크는 다양한 Spring AOP 설정 문제에 대한 솔루션을 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

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

Đặt câu hỏi