我的代码如下:
package lee;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class Chinese implements InitializingBean,BeanPostProcessor {
   private String a;   public String getA() {
return a;
    }    public void setA(String a) {
this.a = a;
     } public void afterPropertiesSet() throws Exception {
System.out.println("afterPropertiesSet");

}

public void init(){
System.out.println("init");
}
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    System.out.println("postProcessBeforeInitialization");
       return bean;
    }     public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
      System.out.println("postProcessAfterInitialization");         return bean;
    } public void prin(){
System.out.println("test");
}
    
}
我的配置文件:
<beans><bean id="chinese" class="lee.Chinese" init-method="init">
  <property name="a">
    <value>123</value>
  </property>
</bean>
</beans>测试代码:
public static void main(String[] args) {
// XmlBeanFactory factory=new XmlBeanFactory(new       
                        FileSystemResource("applicationContext.xml"));
//
// Chinese a=new Chinese(); 
// factory.addBeanPostProcessor(a);
// System.out.println(factory.getBean("chinese"));


ApplicationContext context=new FileSystemXmlApplicationContext("applicationContext.xml");
System.out.println(context.getBean("chinese"));

}奇怪的是,如果用注释掉那段运行,也就是用BeanFActory,手动注册BeanPostProcesser,结果可以正确打印出:
postProcessBeforeInitialization
afterPropertiesSet
init
postProcessAfterInitialization
的顺序,可以用ApplicationContext去注册(不是说可以自动搜索所有实现BeanPostProcesser接口的Bean并自动注册吗?)postProcessAfterInitialization,postProcessBeforeInitialization就不执行了,有如下异常:
2007-3-28 23:22:39 org.springframework.context.support.AbstractApplicationContext$BeanPostProcessorChecker postProcessAfterInitialization
信息: Bean 'chinese' is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2007-3-28 23:22:39 org.springframework.context.support.AbstractApplicationContext initMessageSource
信息: Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@503429]
2007-3-28 23:22:39 org.springframework.context.support.AbstractApplicationContext initApplicationEventMulticaster
信息: Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@1dd46f7]
2007-3-28 23:22:39 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [chinese]; root of BeanFactory hierarchy]