내용으로 건너뛰기
권남
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
springframework:aop
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Spring AOP ====== ===== "@annotation" ===== * 인터페이스 메소드에 건 Annotation은 상속되지 않는다. * 따라서 "@annotation" 포인트컷은 인터페이스 메소드에 걸면 안된다. * 부모 클래스 메소드나 혹은 인터페이스 구현 클래스에 걸어줘야 한다. ===== DefaultAdvisorAutoProxyCreator ===== * 이 Bean은 Spring Advisor를 등록해서 AOP를 구현한다. * ''<aop:aspectj-autoproxy />'' 혹은 ''@EnableAspectJAutoProxy''를 사용하는 상황에서 [[http://docs.spring.io/spring/docs/3.2.4.RELEASE/javadoc-api/org/springframework/aop/framework/autoproxy/DefaultAdvisorAutoProxyCreator.html|DefaultAdvisorAutoProxyCreator]]를 사용하자, 어드바이스가 두 번씩 호출되는 현상이 발생했다.(AOP, advice, twice, called) * ''<aop:aspectj-autoproxy />'' 혹은 ''@EnableAspectJAutoProxy''는 그 자체로 [[http://docs.spring.io/spring/docs/3.2.4.RELEASE/javadoc-api/org/springframework/aop/aspectj/annotation/AnnotationAwareAspectJAutoProxyCreator.html|AnnotationAwareAspectJAutoProxyCreator]]를 사용하는데, 이 클래스는 스스로 Spring의 Advisor들도 등록해주므로 ''DefaultAdvisorAutoProxyCreator''를 사용할 필요가 없다. ===== AOP가 갑자기 작동을 안 해요 ===== * 이 경우 보통은 부모 ApplicationContext와 자식 ApplicationContext가 있을 때 * ''@EnableAspectJAutoProxy'' 등을 통한 AOP 활성화는 부모에서 수행하고, * 자식 쪽에서 부모쪽 AOP 걸린 Bean을 주입 받았지만 AOP 작동 안한다면, * 이는 자식쪽 ApplicationContext에서 부모쪽 Bean을 **component-scan** 등으로 재생성했기 때문이다. ===== Spring 3 AOP 종류에 따른 Class/Interface 차이 ===== ==== proxyTargetClass = false ==== * Java Inteface 기반 Proxy를 한다. * 프록시 대상 객체가 Interface를 구현하지 않거나 의도치 않게 부모 클래스가 구현한 인터페이스를 상속할 경우 프록시 대상 Concrete class로는 해당 타입을 못찾는 현상이 발생할 수 있다. ==== proxyTargetClass = true ==== * AOP Mode가 ''AdviceMode.PROXY''일 때만 가능. * Class 기반 Proxy인데, ''cglib''의 제약사항들이 있기 때문에 그를 따라야한다. * Default Constructor가 존재해야한다. ===== 참조 ===== * [[https://www.baeldung.com/spring-aop|Introduction to Spring AOP | Baeldung]]
springframework/aop.txt
· 마지막으로 수정됨: 2021/03/03 17:12 저자
kwon37xi
문서 도구
문서 보기
이전 판
역링크
맨 위로