2016-06-15 48 views
2

我目前正在做春季新手教程,似乎我有一樣的人一樣喜歡使本教程的人,但我不斷得到錯誤NullPointerException,有人可以幫助我嗎?爪哇春天AutoWire byName

如果取消註釋,我的xml文件中有部分是註釋的,程序將起作用。但沒有它,當我嘗試使用autowire byName它不起作用。

主類:

public class MainSpring { 

    public static void main(String[] args) { 

    ApplicationContext context= new ClassPathXmlApplicationContext("konfiguracja.xml"); 
    SomeBean bean = context.getBean("SomeBean",SomeBean.class); 

    System.out.println(bean.getInjectedBean1().getName()); 
    System.out.println(bean.getInjectedBean2().getName()); 
    } 
} 

InjectedBean類

package springTutorial; 

public class InjectedBean { 

    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 

SomeBean類

import org.springframework.beans.factory.annotation.Autowired; 

public class SomeBean { 

    private InjectedBean InjectedBean1; 
    private InjectedBean InjectedBean2; 
    public InjectedBean getInjectedBean1() { 
     return InjectedBean1; 
    } 
    public void setInjectedBean1(InjectedBean injectedBean1) { 
     this.InjectedBean1 = injectedBean1; 
    } 
    public InjectedBean getInjectedBean2() { 
     return InjectedBean2; 
    } 
    public void setInjectedBean2(InjectedBean injectedBean2) { 
     this.InjectedBean2 = injectedBean2; 
    } 



} 

configuration.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:c="http://www.springframework.org/schema/c" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> 


    <bean id="InjectedBean1" class="springTutorial.InjectedBean" > 

    <property name="name" value="asasa" > 


    </property> 
    </bean> 

    <bean id="InjectedBean2" class="springTutorial.InjectedBean" > 

    <property name="name" value="vbvb"> 

    </property> 
    </bean> 

    <bean id="SomeBean" class="springTutorial.SomeBean" autowire="byName" > 

<!-- <property name="injectedBean1"> --> 

<!-- <ref bean="InjectedBean1"/> --> 

<!-- </property> --> 


<!-- <property name="injectedBean2"> --> 

<!-- <ref bean="InjectedBean2"/> --> 
<!-- </property> --> 

    </bean> 

</beans> 
+2

分別將您的bean id更改爲'injectBean1'和'injectedBean2'。 –

+0

歡迎來到Stack Overflow。請指出在IDE下運行時出現錯誤的位置。 –

+0

它的工作原理,謝謝你的幫助,我祝你好日子:) – Ravencrest1985

回答

0

根據Configuration.xml; InjectedBean1,InjectedBean2沒有注入任何值。

所以基本上InjectedBean1和InjectedBean2都是null。

null你正在嘗試獲取操作,這是導致空指針異常。

將Ref添加到InjectedBean1和InjectedBean2將解決問題。

<bean id="SomeBean" class="com.stackoverflow.SomeBean" autowire="byName"> 
     <property name="injectedBean1"> 
      <ref bean="inject1" /> 
     </property> 
     <property name="injectedBean2"> 
      <ref bean="inject2" /> 
     </property> 
    </bean> 
+0

inject1和inject2需要定義。我沒有包括在這裏。 –