我正在使用bean post处理器,它给出了空指针exception
package com.bpp.beans; public class EmpBean { String name; String id; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public void initempbean() { System.out.println("inside initempbean"); } public void destroyempbean() { System.out.println("inside destroyempbean"); } } package com.bpp.beans; public class Person { String name; String id; EmpBean empBean; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public EmpBean getEmpBean() { return empBean; } public void setEmpBean(EmpBean empBean) { this.empBean = empBean; } public void initperson() { System.out.println("inside init personnnnnnn"); } public void destroyperson() { System.out.println("inside destroy personnnn"); } } package com.bpp.beans; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; public class EmpPostProcessor implements BeanPostProcessor { @Override public Object postProcessAfterInitialization(Object bean, String arg1) throws BeansException { System.out.println("inside bean pp after initialization"); return null; } @Override public Object postProcessBeforeInitialization(Object bean, String arg1) throws BeansException { System.out.println("inside bean pp before initialization"); return null; } } package com.bpp.main; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.bpp.beans.Person; public class BppMain { public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("com/bpp/commons/application-context.xml"); Person obj=context.getBean("person",Person.class); System.out.println("the value of name is:"+obj.getName()); } }
创建emp bean时exception是空指针exception
线程“main”org.springframework.beans.factory.BeanCreationException中的exception:在类路径资源[com / bpp / commons / application-context.xml]中定义名为'emp'的bean时出错:init方法的调用失败; 嵌套exception是java.lang.NullPointerException 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:294) 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 在org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139) 在org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83) 在com.bpp.main.BppMain.main(BppMain.java:12) 引起:java.lang.NullPointerException 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1537) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ......还有12个
在Spring中,doc是为postProcessAfterInitialization
和postProcessBeforeInitialization
编写的:
返回:要使用的bean实例,原始实例或包装实例
由于在这些方法中不执行任何操作,因此应返回作为参数传递的Object
,该参数是bean的实例。