이 포스팅은 인프런 영한님의 강의를 복습하고 정리한 글입니다. @Aspect @Aspect를 단 클래스에 어드바이스와 포인트컷을 구현해주고, 이 클래스를 스프링 빈으로 등록해주면 스프링 AOP가 제공해주는 빈 후처리기(Bean PostProcessor)인 AnnotationAwareAutoProxyCreator는 내부적으로 이 @Aspect 스프링 빈을 어드바이저로 만들어 @AspectAdvisorBuilder에 저장해둔다. AnnotationAwareAutoProxyCreator는 다른 스프링 빈을 등록할 때, 포인트컷으로 어드바이스의 대상이 되는지 확인한다. 이 때 살펴보는 어드바이저는 스프링 빈으로 등록된 어드바이저, @Aspsect Adviosr Builder 내부의 저장소에 저장된 어드바이저를 ..
이 포스팅은 인프런의 김영한님 강의를 듣고 복습하며 작성한 글입니다. 포인트 컷 지시자 앞선 글에서 스프링 AOP가 지원하는 @Aspect의 어드바이저 종류에 대해서 알아봤다. 이번 포스팅에서는 포인트컷 지시자에 대해서 정리하고자 한다. 포인트컷은 AnnotationAwareAutoProxyCreator가 @Aspect 어노테이션을 읽고 어드바이저를 가지는 프록시를 만들려고 할 때, 이 스프링 빈에 적용해도 되는지를 판단하는 기준이 된다. 포인트컷 지시자는 이 포인트컷이 어디에 적용될지를 정의할 수 있도록 도와주는 도구다. 포인트 컷 지시자 종류 execution : 가장 많이 씀. (접근지시자? / 반환타입 / 선언타입? / 메서드명 / 파라미터) 형태를 가짐. ?는 생략 가능 선언타입 : 부모타입 선..
이 포스팅은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. @Aspect 횡단 관심사 적용 앞선 게시글들에서 로그 추적기를 달기 위해서 '프록시 개념'을 처음으로 도입했다. 그리고 그 프록시 개념을 좀 더 편리하게 쓰기 위해 자바 리플렉션을 활용했다. 자바 리플렉션으로 부족해 JDK 동적 프록시, CGLIB 동적 프록시를 사용했다. 거기에 스프링이 제공하는 프록시 팩토리를 사용했고, @Component들에도 프록시를 넣어주기 위해 빈 포스트 처리기(Bean Post Processor)까지 도입했다. 마지막으로 스프링이 제공하는 AnnotationAwareAutoProxyCreator라는 빈 후처리기를 이용해 손쉽게 @Aspect로 횡단 관심사를 적용할 수 있게 되었다. Spring이 제공하는 Aut..
이 글은 인프런의 김영한님의 강의를 듣고 복습하며 작성한 글입니다. 스프링이 제공하는 빈 후처리기, AutoProxyCreator 이전 게시글(https://ojt90902.tistory.com/701) 에서 빈 후처리기를 이용해서 스프링 빈이 등록되는 과정에서 원하는 빈을 선택해서 자동으로 프록시 빈을 생성하고 바꿔치기해서 등록하는 과정을 확인했다. 그런데 이 과정마저 귀찮아서 나온 것이 있다. 바로 스프링 AOP가 제공하는 AutoProxyCreator다. AutoProxyCreator AutoProxyCreator의 풀 네임은 AnnotationAwareAspectJAutoProxyCreator다. 이 녀석은 스프링 빈 후처리기인데, 특정 빈들만 선택적으로 어드바이스를 넣은 프록시 객체를 만들고 바..
이 포스팅은 인프런의 김영한님 강의를 복습하며 정리한 글입니다. 프록시 팩토리의 한계 앞선 글(https://ojt90902.tistory.com/701)에서 프록시 팩토리만으로는 @Component로 등록되는 스프링 빈들을 프록시 형태로 처리 해줄 수 없다는 한계점이 있다는 것을 알았다. 덤으로 의존관계 주입도 하나하나 @Configuration에서 해야하는데, 이 설정도 무척이나 번거롭다. 그렇다면 프록시 팩토리만 사용했을 때의 위 한계점은 어떻게 극복할 수 있을까? 빈 후처리기(Bean PostProcessor)의 활용 기본적으로 스프링 빈은 위의 그림처럼 등록이 된다. @Bean, @Component, @Import 어노테이션이 붙은 클래스들을 대상으로 스프링은 빈을 생성해서 스프링 빈 저장소에 ..