使用setter方法创建弹簧豆 - 空指针异常



嗨,我正在学习春豆,我已经尝试了这个简单的豆子。我有一个带有数据成员的类。数据成员使用二传手方法初始化。我用标签在我的 bean 配置 xml 中设置了数据成员。我收到一个空指针异常,重新指向我试图传递给设置器的"消息"。我不认为 NULL 实际上被传递,因为我在传递字符串文字时遇到了同样的问题。

这是我的班级:

 public class HelloWorld implements DummyInterface {
    //private WebAppPackagerPortal WebAppObj;
    private String message;
    public void setMessage(String message) {
        this.message = message;
    }
    public String getMessage(){
        return this.message;
    }
    @Override
    public void printMessage() {
    }
}

这是我的豆子xml:

<bean id="HelloWorldBean" class="pkg.HelloWorld">
    <property name="message" value="${content.msg}"/>
    <!--<property name="message" value="DUMMYMSG"/>-->
</bean>

我收到异常如下:

> Feb 24, 2016 1:33:50 PM org.apache.catalina.core.StandardContext
> listenerStart SEVERE: Exception sending context initialized event to
> listener instance of class
> org.springframework.web.context.ContextLoaderListener
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'HelloWorldBean' defined in ServletContext
> resource [/WEB-INF/spring-config.xml]: Error setting property values;
> nested exception is
> org.springframework.beans.PropertyBatchUpdateException; nested
> PropertyAccessExceptions (1) are: PropertyAccessException 1:
> org.springframework.beans.MethodInvocationException: Property
> 'message' threw exception; nested exception is
> java.lang.NullPointerException    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1514)
>   at
...

Caused by:
> org.springframework.beans.PropertyBatchUpdateException; nested
> PropertyAccessExceptions (1) are: PropertyAccessException 1:
> org.springframework.beans.MethodInvocationException: Property
> 'message' threw exception; nested exception is
> java.lang.NullPointerException    at
> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:121)
>   at
> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:75)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1510)
>   ... 26 more

您发布的代码没有任何问题。对于春天,问题可能并不总是你认为它:)的地方。由于您尚未在实际实例化 bean 或您使用的 Spring 版本/jar 的位置发布代码,因此我建议您尝试以下步骤。

  1. 从 xml 中删除<property name="message" value="${content.msg}"/>,看看它是否有效。如果您遇到相同的错误,则意味着问题出在其他地方。可能在配置中。
  2. 第二步是尝试在 Web 容器之外运行它。

    ApplicationContext applicationContext = new 
        ClassPathXmlApplicationContext("/spring-config.xml");
     HelloWorld helloWorld = (HelloWorld ) applicationContext.getBean("HelloWorldBean");
    
  3. 如果这有效,请查看 Web 应用程序配置,并将生成的 Web 应用程序中的 jar 与构建环境进行比较。

  4. 如果这不起作用,那么您的设置中可能有不兼容的 jar。

    org.springframework.beans.PropertyBatchUpdateException; nested...

有时不兼容的罐子会导致此问题,但并非总是如此。

最新更新