본문 바로가기

BOOK/토비의스프링

[1권] 토비의 스프링 8일차

확장된 포인트컷

  • 기존의 MethodMatcher는 Method에 Proxy를 적용하기 위해 사용하는 메소드이다.
  • 스프링 빈 오브젝트를 프록시 오브젝트로 만들기 위해 사용하는 Method는 getClassFilter()이다.
  • 만약 PointCut 선정 기능을 모두 적용한다면, 먼저 프록시를 적용할 클래스인지 판단하고 나서, 적용 대상 클래스라면 어드바이스를 적용할 메소드인지 확인하는 식으로 동작한다. -> 결국 두가지를 충족해야 타깃의 메소드에 어드바이스가 적용되는 것이다.
  • 즉, 모든 빈에 대해 프록시 자동 적용 대상을 선별해야 하는 빈 후처리기인 DefaultAdvisorAutoProxyCreator는 클래스와 메소드 선정 알고리즘을 모두 갖는 포인트컷이 필요하다.

설정

  • 즉, Parent Attribute는 쓰여지는 객체, 즉 부모의 설정을 물려받을수 있으므로 사용하는 Attribute이다.

스프링 AOP 과정

  • 트랙재션 서비스 추상화
  • 프록시와 데코레이터 패턴
  • 다이내믹 프록시와 프록시 팩토리 빈
  • 자동 프록시 생성 방법과 포인트컷
  • 부가기능의 모듈화

AOP : 에스펙트 지향 프로그래밍

  • 에스펙트는 부가될 기능을 정의한 코드인 어드바이스와 어드바이스를 어디에 적용할지를 결정하는 포인트컷을 함꼐 갖고 있다.
  • 애플리케이션의 핵심적인 기능에서 부가적인 기능을 분리해서 애스펙트라는 독특한 모듈로 만들어서 설계하고 개발하는 방법을 애스펙트 지향 프로그래밍 또는 AOP라고 한다.

AOP 적용 기술

프록시를 이용한 AOP

  • 메소드 호출 과정에 참여해서 부가기능을 제공해준다.
  • 어드바이스가 구현하는 MethodInterceptor 인터페이스는 다이내믹 프록시의 InvocationHandler와 마찬가지로 프록시로부터 메소드 요청정보를 전달받아서 타깃 오브젝트의 메소드를 호출한다. 타깃의 메소드를 호출하는 전후에 다양한 부가기능을 제공할수 있다.

바이트코드 생성과 조작을 통한 AOP

  • Aspect J는 스프링과 같은 간접적인 방법이 아니라 직접 코드를 뜯어고치는 직접적인 방법을 사용한다.

 

'BOOK > 토비의스프링' 카테고리의 다른 글

[1권] 토비의 스프링 10일차  (0) 2022.09.07
[1권] 토비의 스프링 9일차  (0) 2022.09.05
[1권] 토비의 스프링 7일차  (0) 2022.09.01
[1권] 토비의 스프링 6일차  (0) 2022.08.31
[1권] 토비의 스프링 5일차  (0) 2022.08.29