inflearn logo
강의

Khóa học

Chia sẻ kiến thức

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

143

jhehun3944

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

0

좋은 강의 감사 드립니다.

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

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

 

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

 

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

spring spring-aop

Câu trả lời 2

0

admin0013

안녕하세요?

채규태 강사입니다.

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

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

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

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

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

0

communityai8509

안녕하세요, 인프런 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 설정 문제에 대한 솔루션을 다루고 있습니다.

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

안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..

0

17

1

실무 내용 문의드려요

0

26

2

SingletonService가 JVM이 뜰 때 생성되는게 맞나요?

0

35

2

임포트 오류

0

34

2

답을언제쯤받아볼수있나요

0

49

2

형 책 어떻게 받아?

1

59

1

@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.

0

33

2

mvc 패턴 - 적용 강의에서 회원가입할 때 redirect가 아닌 forward인 이유가 궁금합니다.

0

29

1

프로젝트가 없어요..

0

56

2

JpaCursorItemReader의 정렬 조건 부재의 영향

1

46

2

changeTeam 메서드 질문

0

35

1

"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션

1

53

2

테스트 관련 질문!

0

56

2

handleBindException 의 기대의도가 방향이 맞는지 궁금합니다.

0

43

2

SpringBoot 4.0.6 버전에서 PackageLogTracePostProcessor exception

0

87

3

인텔리제이 오류

0

52

1

프로젝트 의존 관계

0

53

2

application.properties가 적용되지 않아요

1

71

3

새 프로젝트 속 제너레이터에 SpringBoot가 없습니다.

0

54

2

섹션3. 11 회원객체 다이어그램

0

37

1

OCP, DIP과 @Qualifier 어노테이션에 대해서 질문합니다.

0

36

1

강의 연장 요청

0

48

2

설정 정보 없이 임베디드 데이터베이스 생성

0

40

1

형 이번에 낸 책이랑 강의 내용에 차이가 있어?

1

90

1