Whiteship's Note

BeanPostProcessor 사용 예

Spring/Chapter 3 : 2007.03.13 15:35


BeanPostProcessor 인터페이스는 다음과 같습니다.
사용자 삽입 이미지
이 인터페이스를 구현한 클래스들 입니다. 유용하니까 만들어 뒀을 텐데 언제 어떤걸 사용하면 좋을지는 나~~~중에 알아봐야겠네요.
AbstractAdvisorAutoProxyCreator, AbstractAutoProxyCreator, ActionServletAwareProcessor, AdvisorAdapterRegistrationManager, AnnotationAwareAspectJAutoProxyCreator, ApplicationContextAwareProcessor, AspectJAwareAdvisorAutoProxyCreator, BeanNameAutoProxyCreator, DefaultAdvisorAutoProxyCreator, InstantiationAwareBeanPostProcessorAdapter, PersistenceAnnotationBeanPostProcessor, PersistenceExceptionTranslationPostProcessor, PortletContextAwareProcessor, RequiredAnnotationBeanPostProcessor, ScriptFactoryPostProcessor, ServletContextAwareProcessor, SimplePortletPostProcessor, SimpleServletPostProcessor
SIA(Spring In Action) 74쪽 부터 몇 장에 걸쳐 postProcessAfterInitialization 메소드를 사용하는 예제가 나와있습니다.

Reference에서는 이 인터페이스를 사용하는 예제라기 보다는 BeanFactory와 Applcation Context에 등록하는 방법을 주로 다루고 있습니다.

Member 객체의 id 속성 값이 "혜인이"이라면 "이쁘니"로 값을 바꾸는 예제를 만들어 보겠습니다.
    @Test public void beanPostProcessing(){
        Member keesun15 = getMember("keesun15");
        assertTrue(keesun15.getId().equals("이쁘니"));
    }

설정 내역은 다음과 같습니다.
    <bean id="keesun15" class="beanConfiguration.Member" >
        <property name="id" value="혜인이">
    </bean>
테스트는 실패합니다. keesun15 bean의 id 속성 값이 "혜인이"이기 때문입니다.

KeesunPostProcessor 를 구현합니다.
그리고 설정 파일에 bean으로 등록 해주면 테스트가 통과 합니다.[각주:1]

<bean class="beanConfiguration.KeesunPostProcessor" />

현재 사용중인 container가 ApplicationContext 종류이기 때문에 간단하게 bean으로 등록 해두기만 하면 container가 알아서 BeanPostProcessor를 읽어서 적용시켜 줍니다.

BeanFactory를 사용할 경우에는 Reference에 나온대로 addBeanPostProcessor를 소스 코드에서 등록해 줘야 합니다.
ConfigurableBeanFactory factory = new XmlBeanFactory(...);
           
    // now register any needed BeanPostProcessor instances
    MyBeanPostProcessor postProcessor = new MyBeanPostProcessor();
    factory.addBeanPostProcessor(postProcessor);

    // now start using the factory


  1. 이 객체를 받아와서 사용할 일은 없어 보이니까..id나 name을 굳이 적어줄 필요가 없겠네요. [본문으로]

'Spring > Chapter 3' 카테고리의 다른 글

MessageSource 사용 예  (0) 2007.03.15
MessageSource 인터페이스  (2) 2007.03.15
3.8. The ApplicationContext  (0) 2007.03.14
'만들 수 없는 것'을 FactoryBean으로 만들기  (2) 2007.03.14
BeanFactoryPostProcessor 사용 예  (0) 2007.03.13
BeanPostProcessor 사용 예  (0) 2007.03.13
3.7. Container extension points  (0) 2007.03.13
3.6. Bean definition inheritance  (0) 2007.03.12
ObjectFactoryCreatingFactoryBean 사용 예  (0) 2007.03.12
BeanFactoryAware 사용 예  (1) 2007.03.12
BeanFactoryAware  (0) 2007.03.12
top

Write a comment.