스프링 AOP 아키텍처
 스프링 AOP의 핵심 아키텍처는 프록시를 기반으로 하고 있다. 어드바이스가 적용된 클래스의 객체를 생성하고 싶다면, 먼저 프록시의 위빙할 모든 액스팩트를 ProxyFactory에 제공하고 반드시 ProxyFactory클래스를 사용하여 해당 클래스 인스턴스의 폭시를 만들어야 한다. 내부적으로 스프링은 두 개의 프록시 구현체가 있다. JDK동적 프록시와 CGLIB프록시다.

스프링 조인포인트
 스프링 AOP에서 주목해야 할 것 하나는 오직 한 종류의 조인포인트인 메서드 호출 조인포인트만 지원한다는 것이다. 이런 단순함이 스프링의 접근성을 높여준다.

스프링 애스팩트
 
스프링 AOP에서 에스팩트는 Advisor 인터페이스를 구현한 클래스의 인스턴스를 말한다. Advisor는 두 개의 하위 인터페이스 IntroductionAdvisor와 PointcutAdvisor가 있다. PointcutAdvisor인터페이스는 포인트컷을 사용하는 모든 어드바이저들이 구현하고 있다. 이것을 사용하여 해당 조인포인트에 어드바이스의 기능을 적용한다.

ProxyFactory 클래스
 
ProxyFactory 클래스는 스프링 AOP에서 프록시 생성과 위빙을 제어한다.
 어드바이스이름  인터페이스  설명
 Before  org.springframework.aop.
MethodBeforeAdivce
 Before 어드바이스를 사용하여, 조인포인트를 실행가히 전에 어떤 처리를 할 수 있다. 스프링에서 조인포인트는 항상 메서드 호출이기 때문에 해당 메서드를 처리하기 전에 전처리 과정을 수행하는 데 사용할 수 있다. Before 어드바이스는 호출하는 메서드에 넘겨주는 인자들을 비롯한 타켓 객체에도 접근할 수 있지만 메서드 실행 자체를 제어할 수는 없다.
 After Returning  org.springframework.aop.
AfterReturningAdvice
 After Returning 어드바이스는 조인포인트에 있는 메서드가 실행을 끝내고 값을 반환 했을 때 실행된다. After Returning 어드바이스는 해당 메서드에 넘겨주는 인자 타켓 객체 그리고 반환값에 접근 할 수 있다. After Returning 어드바이스를 적용하기 전에 이미 메서드는 실행을 마쳤기 때문에 메서드 호출 자체를 제어할 수는 없다.  
 Around  org.aopalliance.intercept.
MethodInterceptor
 스프링에서 Around 어드바이스는 AOP연합 표준
MethodInterceptor를 사용하도록 만들었다. 여러분이 만든 어드바이스는 메서드 실행전과 후에 어떤 작업을 수행할 수 있으며, 어느 시점에 메서드를 실행하지 않을지 제어할 수 있다. 원한다면 해당 메서드 대신에 별도의 로직을 만들어 사용할 수 있다.
 Throws  org.springframework.aop.
ThrowsAdvice
 Throws 어드바이스는 메서드가 호출된 후에 실행되는데 단 해당 메서드가 예외를 던졌을 경우에만 실행한다. 원하면 특정 예외만 잡아내도록 설정할 수 있으며, 해당 예외를 발생시킨 메서드에 넘겨준 인자와 타켓 객체에 접근할 수 있다.
 Introduction  org.springframework.aop.
IntroductionInterceptor
 스프링은 인트로덕션을 특별한 인터셉터 종류로 모델링했다. 인트로덕션 인터셉터를 사용하여, 여러분은 어드바이스를 적용할 메서드 구현체를 지정할 수 있다.

 

+ Recent posts