Section 1. Spring AOP (XML)
1. Spring AOP
3. Around Advice 구현
- MethodInterceptor 인터페이스 구현 (= 프록시 핸들러)
- invoke() 메서드를 오버라이딩 해야함
- proceed() 메서드를 이용하여 실제 객체의 메서드 호출 (= method.invoke)
4. Before Advice 구현
- MethodBeforeAdvice 인터페이스 구현 ( = 프록시 핸들러)
- before() 메서드를 오버라이딩 해야함
- 실제 객체의 메서드를 호출할 필요 없음
5. After Returning Advice 구현
- AfterReturningAdvice 인터페이스 구현 ( = 프록시 핸들러)
- afterReturning() 메서드를 오버라이딩 해야함
- Object returnValue - 메서드의 반환값
- Method method - 실제 호출되는 메서드
- Object[] args - 실제 호출되는 메서드의 인자값(들)
- Object target - 실제 객체
6. After Throwing Advice 구현
- ThrowsAdvice 인터페이스 구현 ( = 프록시 핸들러)
- 오버라이딩할 메서드 X -> 수 많은 예외가 발생할 수 있으므로 특정한 것을 지정할 수 없음
7. XML 설정
① Target - 실제 객체
② MethodInterceptor - 부가 기능을 수행할 핸들러
③ Proxy - 부가 기능을 수행하고 실제 객체의 메서드를 호출
- proxy 객체에 setTarget() 메서드를 이용하여 실제 객체 매핑
- proxy 객체에 setInterceptorNames() 를 이용하여 핸들러 매핑
- list 태그는 참조(ref) 목록이므로 value로 지정하면 해당 id 값을 갖는 객체를 참조(ref)
- list 참조 목록에서 Before / Around 중에 상단에 있는 핸들러를 먼저 수행
- AfterReturning 이 Around 아래에 존재하면 실제 객체의 메서드가 반환된 후 수행되고, 위에 존재하면 Around Advice의 invoke 메서드가 반환된 후 수행됨
8. Main 부분
- XML 설정 파일에서 proxy 부분을 변경하면서 Spring AOP / DI 구현