사용자 도구

사이트 도구


springframework:aop

문서의 이전 판입니다!


Spring AOP

"@annotation"

  • 인터페이스 메소드에 건 Annotation은 상속되지 않는다.
  • 따라서 “@annotation” 포인트컷은 인터페이스 메소드에 걸면 안된다.
  • 부모 클래스 메소드나 혹은 인터페이스 구현 클래스에 걸어줘야 한다.

DefaultAdvisorAutoProxyCreator

  • <aop:aspectj-autoproxy />를 사용하는 상황에서 DefaultAdvisorAutoProxyCreator를 사용하자, 어드바이스가 두 번씩 호출되는 현상이 발생했다.(AOP, advice, twice, called)
  • <aop:aspectj-autoproxy />는 그 자체로 AnnotationAwareAspectJAutoProxyCreator를 사용하는데, 이 클래스는 스스로 Spring의 Advisor들도 등록해주므로 DefaultAdvisorAutoProxyCreator를 사용할 필요가 없다.

AOP가 갑자기 작동을 안 해요

  • 이 경우 보통은 부모 ApplicationContext와 자식 ApplicationContext가 있을 때
  • @EnableAspectJAutoProxy 등을 통한 AOP 활성화는 부모에서 수행하고,
  • 자식 쪽에서 부모쪽 AOP 걸린 Bean을 주입 받았지만 AOP 작동 안한다면,
  • 이는 자식쪽 ApplicationContext에서 부모쪽 Bean을 component-scan 등으로 재생성했기 때문이다.
springframework/aop.1400663990.txt.gz · 마지막으로 수정됨: 2014/05/21 18:19 저자 kwon37xi