• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

AOP execution expression 질문입니다.

19.08.11 12:39 작성 조회수 217

2

예전에 부트기반이 아닌 스프링 프레임웤에서는

<aop:conifg> 라는 XML ApplicationContext로 관리했던 것으로 기억이 납니다.

기선님의 강의의 execution expression을 보면

* me.whiteship..*.EventService.*(..) 이런식으로 되어있는데

제가 알기로는 앞이 리턴타입, 패키지명.. = 패키지명으로 시작하는 모든패키지 *클래스명 .* 모든메소드와 매개변수로 알고 있는데

기선님꺼에서는

* me.whiteship..*.EventService.*(..)

클래스 명 앞에 *.가 붙어있는데 이건 어떤 의미일까요?

제 인텔리j에서는 no Advice Method라고 나왔고

* me.whiteship..*.EventService.*(..)를

* me.whiteship..*EventService.*(..)로 수정하니 제대로 동작하였습니다.

답변 3

·

답변을 작성해보세요.

1

말씀하신게 맞네요. 전 접근제한 패턴으로 생각했는데 그게 생략된거고 리턴 타입이군요. 그리고 ..*. 에 대한 설명은 이해하신게 맞습니다.

0

이런 자료를 봐서 그렇게 말씀드렸습니다.

스프링 레퍼런스와 토비 책을 보니

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)
          throws-pattern?)

https://docs.spring.io/spring/docs/2.0.x/reference/aop.html



이부분에 대해서

execution([접근제한자 패턴] 리턴타입패턴 [타입패턴.]이름패턴(파라미터패턴) [throws 예외패턴]) 인것 같은데
위에 코드의 ?로 적힌 부분은 생략이 가능한 것 같아서

* me.whiteship..*.EventService.*(..) 이 경우에는 리턴타입이 상관없고 패키지는 me.whiteship 속한 여러개이고, 클래스는 *EventService로 끝는 클래스의 모든 메소드에 매개변수 상관없이 적용시킨다라고

이해하면 맞는 걸까요?

0

제일 처음에 오는 *는 리턴타입이 아닙니다. 그렇게 알고 계신 근거는 무엇인가요? 

execution expression 문법은 제가 설명해드릴 수도 있지만 직접 찾아보시기 바랍니다. 그것도 학습입니다.