一个简单的spring后处理问题,我在代码上加了一段简单的后处理代码,在xml里面声明了后处理的bean之后,在载入log bean的时候就返回空指针错误
主体代码如下
public class TakeIn {

public static void main(String[] args){

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
LogFile log = (LogFile)ac.getBean("log");

List workerList = log.getWorkList();

System.out.println("本次招收" + workerList.size() + "位工人,资料如下:");
Iterator it = workerList.iterator();
while(it.hasNext()){
Worker worker = (Worker)it.next();
worker.printInfo();
}
}
}xml代码如下<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="log" class="com.lzw.factory.LogFile">
<property name="workList">
<list>
<ref bean="worker1"/>
<ref bean="worker2"/>
<ref bean="worker3"/>
</list>
</property>
</bean> <bean id="worker1" class="com.lzw.factory.TempWorker">
<property name="name">
<value>王强</value>
</property>
<property name="pay">
<value>500</value>
</property>
</bean>

<bean id="worker2" class="com.lzw.factory.TempWorker">
<property name="name">
<value>宋刚</value>
</property>
<property name="workType">
<value>正式工人</value>
</property>
<property name="pay">
<value>2800</value>
</property>
</bean>

<bean id="worker3" class="com.lzw.factory.TempWorker">
<property name="name">
<value>王良</value>
</property>
</bean>

<!--<bean id="beanPost" class="com.lzw.factory.BeanPostProcessorExample"></bean> //这里我把后处理的bean注释掉就可以运行了

--></beans>后处理代码如下package com.lzw.factory;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;public class BeanPostProcessorExample implements BeanPostProcessor{ public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {

System.out.println("*********");

if(bean instanceof TempWorker){
TempWorker worker = (TempWorker)bean;
if(worker.getpay() <= 800)
worker.setPay(800);
if(worker.getWorkType() == null || worker.getWorkType().equals(""))
worker.setWorkType("临时工");

return worker;
}

return bean;
} public Object postProcessBeforeInitialization(Object arg0, String arg1)
throws BeansException {
// 不操作
//System.out.println("***********");
return null;
}
}