当前位置: 首页 > 知识库问答 >
问题:

我使用的是bean后处理器,它给出了空指针异常

穆承运
2023-03-14
                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;
            }

        }
    <?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:aop="http://www.springframework.org/schema/aop"
            xmlns:c="http://www.springframework.org/schema/c"
            xmlns:p="http://www.springframework.org/schema/p"
            xmlns:context="http://www.springframework.org/schema/context"
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

            <bean class="com.bpp.beans.EmpPostProcessor"/>

            <bean id="emp" class="com.bpp.beans.EmpBean" init-method="initempbean" destroy-method="destroyempbean">
                <property name="name" value="sanjay"/>
                <property name="id" value="44"/>
            </bean>

            <bean id="person" class="com.bpp.beans.Person" init-method="initperson" destroy-method="destroyperson">
                <property name="name" value="sanju"/>
                <property name="id" value="77"/>
                <property name="empBean" ref="emp"/>
            </bean>



    </beans>                


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 in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'emp' defined in class path resource [com/bpp/commons/application-context.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at 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)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)
    at com.bpp.main.BppMain.main(BppMain.java:12)
Caused by: java.lang.NullPointerException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1537)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
    ... 12 more

共有1个答案

杨乐意
2023-03-14

在Spring中,为后处理后初始化后处理前初始化编写文档:

返回:要使用的bean实例,可以是原始实例,也可以是包装的实例

因为您在这些方法中什么都不做,所以您应该返回作为参数传递的Object,这是bean的实例。

 类似资料:
  • 问题内容: 我有一个非常简单的应用程序,它只是一个带有选项卡视图的活动。 我已经初始化并将所有内容强制转换为应有的值,但是不断出现空指针错误,该错误始终链接回 tabHost.setup(); 我正在使用android studio,并且是java的新手。这个问题在这里已经问了很多,但所有答案都只是说要包含setup(),而我已经做到了。 这是我的.java文件: 我的代码和一些在线教程之间的唯一

  • 我有以下方法: 租户数据库服务。findTenantById(tenantId)返回可选的: 当为null时,我希望抛出异常。相反,我看到正在抛出: 有什么帮助吗?

  • 问题内容: 我正在android中做一个应用程序,因此我需要访问com.android.internal.telephony API。现在,我可以访问这些API了,但问题是,无论我在自己的类中调用Class Call.java方法的什么地方,都会抛出。您可以在http://hi- android.info/src/com/android/internal/telephony/Call.java.h

  • > 单击 受保护得空onPrepareDialog(int id,Dialog Dialog) 受保护的对话框onCreateDialog(int id) 如果我对timepickerdialog代码做了什么错误,请告诉我。

  • 本文向大家介绍浅谈java异常处理之空指针异常,包括了浅谈java异常处理之空指针异常的使用技巧和注意事项,需要的朋友参考一下 听老师说,在以后的学习中大部分的异常都是空指针异常。所以抽点打游戏的时间来查询一下什么是空指针异常 一:空指针异常产生的主要原因如下: (1)当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在 (2)当访问或修改一个对象不存在的字段时

  • 问题内容: 在我的appium + testng应用程序中,我输入的是: 给出以下堆栈跟踪: 似乎Appium服务器没有使用该功能成功实例化,但这几乎是在线示例的复制和粘贴-我无法弄清楚出了什么问题。 问题答案: 用if语句括住“ driver”,以了解是否== null。 这是我的能力 使用appium 1.2 *