BeanFactoryPostProcessor 인터페이스에는 메소드가 하나 있습니다.

void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)

이 인터페이스를 구현한 클래스들 입니다.

CustomEditorConfigurer, CustomScopeConfigurer, PreferencesPlaceholderConfigurer, PropertyOverrideConfigurer, PropertyPlaceholderConfigurer, PropertyResourceConfigurer, ServletContextPropertyPlaceholderConfigurer

언제 사용 하면 좋을지는.. 공부를 더 해봐야겠네요.

일단은 Java Developement with Spring 책에 있는 예제[footnote]bean factory가 가지고 있는 모든 bean을 출력하는 BeanFactoryPostProcessor[/footnote]를 사용해 보겠습니다.

public class KeesunFactoryPostProcessor implements BeanFactoryPostProcessor {

    public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException {
        System.out.println("The factory contains the followig beans:");
        String[] beanNames = factory.getBeanDefinitionNames();
        for (int i = 0; i < beanNames.length; ++i)
            System.out.println(beanNames[i]);
    }
   
}

설정 파일에 간단하게 bean을 등록 했습니다.[footnote]AppicationContext 를 사용하고 있기 때문에 이렇게만 하면 됩니다. BeanFactory를 사용할 때는 아래 처럼 소스 코드에서 등록을 해줘야 합니다.
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("ch03/sample8/beans.xml"));
AllBeansLister lister = new AllBeansLister();
lister.postProcessBeanFactory(factory);[/footnote]

<bean class="beanConfiguration.KeesunFactoryPostProcessor" />

그리고 여태까지 모아둔 테스트 들을 그냥 실행해 봤습니다.[footnote]이번에는 따로 test 메소드를 만들지 않고 그냥 콘솔 창에서 테스트 합니다.[/footnote]

The factory contains the followig beans:
member
혜인
keesun
keesun2
keesun3
keesun4
email
keesun5
email2
keesun6
keesun7
email3
keesun8
keesun9
keesun10
keesun11
keesun12
ticket
keesun13
keesun14
keesun15
beanConfiguration.KeesunPostProcessor
beanConfiguration.KeesunFactoryPostProcessor

콘솔창에 여태까지 Spring Reference 3장에 관한 예제를 만들면서 사용한 bean들의 name이 쭉 찍힌 것을 확인할 수 있습니다.