스프링에서의 AOP (Aspect-Oriented Programming)
1) 개념
* 스프링은 4가지 형태의 핸들러(어드바이스, Advice)를 제공.
* 스프링에서는 핸들러를 어드바이스(Advice)라는 개념으로 사용.
* JAVA 레벨이 아닌 XML을 통해 객체를 생성하고, 인젝션(Injection)함
[코드 간략 설명]
- 스프링 프레임워크에서 제공해주는 핸들러(어드바이스) : MethodeInterceptor
- MethodeInterceptor : Around Advice 사용할 때, 구현해야 하는 인터페이스.
- MethodeInterceptor 는 InvocationHandler 와 동일한 기능을 수행하나 차이점은 InvocationHandler 의 경우에는 프록시할 타깃 객체를 InvocationHandler 인터페이스 구현 객체가 알고 있어야 하나, MethodInterceptor 의 경우에는 MethodInvocation 객체가 타깃 객체와 호출된 메소드 정보를 모두 알고 있음.
- 인터페이스(Interface)는 스프링 프레임워크에서 알아서 감지(Auto Detecting)하여 연결해줌. 그러므로 위의 Proxy Bean 객체 XML 코드에서 aoptest.Calculator 부분(파란색)은 제거해도 무방함.
- 스프링 프레임워크는 Invoke 대신 proceed 메서드를 호출하여 주 업무 프로세스를 호출함. / 또한 스프링 프레임워크는 핸들러(Handler) 대신 어드바이스(Advice)를 생성.
* 어드바이스(Advice) 란?
- 타깃 오브젝트(Target Object)에 적용할 부가 기능을 담은 오브젝트
- 메인 업무에 보조적으로 추가될 보조 업무.
[XML 레벨로 보조 업무 연결 코드가 이동하면서 JAVA 코드가 단순해짐]
* 위의 X 표시된 코드는 주석처리하고 AOP를 활용하여 Advice 를 적용한 JAVA 코드
* 객체의 생성과 조립을 메인 함수에서 코드에서 관리하였지만, 부가적인 파트(객체 생성과 의존성)는 XML 파일로 이동시킴.
* XML 빈 객체의 이름 및 속성을 변경함으로써, 기존 코드에 바로 적용 가능.
* 부가 코드와 주 코드를 분리하여 필요할 때 도킹(Docking)하여 사용 가능.
* 위와 같은 동적 프록시(Dynamic Proxy)는 ApplicationContext의 getBean 메서드를 통해서 개체를 얻어옴.
2) 스프링 프레임워크에서의 4가지 형태의 Advice
'개발&컴퓨터 > 개발강좌' 카테고리의 다른 글
스프링 프레임워크 기본 강좌 (10) - 빈 후처리기(Bean Post Processor) (0) | 2015.04.23 |
---|---|
스프링 프레임워크 기본 강좌 (9) - 포인트컷, 조인포인트 (0) | 2015.04.20 |
스프링(Spring) 프레임워크 기본 개념 강좌 (7) - Patterns (0) | 2015.04.04 |
스프링(Spring) 프레임워크 기본 개념 강좌 (6) - Dynamic Proxy (0) | 2015.04.01 |
스프링(Spring) 프레임워크 기본 개념 강좌 (5) - AOP Proxy (3) | 2015.03.26 |