스프링이 다이나믹프록시와 팩토리빈을 썩어서 제공하는 추상화된 서비스 => 프록시 팩토리빈
프록시 팩토리빈은 다이나믹프록시처럼 타겟의 인터페이스를 구현한 프록시 오브젝트를 손쉽게 만들어준다.
getObject()
프록시 팩토리빈은 팩토리빈처럼 스프링에 빈으로 등록할 수 있다.
프록시 팩토리빈과 팩토리빈이 다른 점은
다이나믹하게 생성되는 프록시오브젝트가 부가기능을 추가하여 타겟을 호출하는 invoke()메소드의 인터페이스가 다르다.
팩토리빈은 InvocationHandler 인터페이스
프록시 팩토리빈은 MethodInterceptor 인터페이스
또 다른 점은 부가기능을 적용할 메소드 선정 알고리즘이다.
팩토리빈은 InvocationHandler 인터페이스의 invoke 메소드 구현시 해당 알고리즘을 구현해야 한다.
프록시 팩토리는 Pointcut을 주입하여 적용한다.
프록시 팩토리빈에서는 MethodInterceptor 인터페이스의 구현체를 Advice라 한다.
그리고 Pointcut과 Advice를 한 묶음으로 만들어 Advisor라고 한다.
Pointcut과 Advice는 빈으로 등록하여 여러개의 프록시 팩토리빈에서 얼마든지 재사용가능하다
반면에 (타겟을 알고있어야 하는) InvocationHandler의 구현체는 팩토리빈에 하나씩 만들어질 수 밖에 없다.
'아는 만큼 보인다 > Spring Framework' 카테고리의 다른 글
AOP (Aspect Oriented Programming) 관점지향프로그래밍 (0) | 2012.06.17 |
---|---|
프록시 팩토리빈 ==> 빈 후처리기(BeanPostProcessor) (0) | 2012.06.14 |
데코레이터 패턴 ==> 다이나믹프록시(자바) + 팩토리빈(스프링) (0) | 2012.06.13 |
스프링이 빈 오브젝트를 생성하는 방법 (0) | 2012.06.12 |
서비스 추상화 그리고 DI (Dependency Injection) (0) | 2012.06.06 |