2016-06-15 9 views
2

Ich mache gerade Anfänger Tutorial über Frühling, es scheint, ich habe alles gleich wie Person, die dieses Tutorial macht, aber ich bekomme immer Fehler NullPointerException, könnte mir jemand helfen?Java Spring AutoWire byName

Es gibt Abschnitt in meinem XML, der kommentiert wird, wenn Sie es auskommentieren, Programm wird funktionieren. Aber ohne es, wenn ich versuche, autowire byName zu verwenden, funktioniert es nicht.

Hauptklasse:

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 Klasse

package springTutorial; 

public class InjectedBean { 

    private String name; 

    public String getName() { 
     return name; 
    } 

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

} 

SomeBean Klasse

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 Datei

<?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

Ändern Sie Ihre Bean-IDs in 'injectedBean1' bzw.' injectedBean2'. –

+0

Willkommen bei Stack Overflow. Bitte geben Sie an, wo Sie den Fehler erhalten, wenn Sie unter der IDE laufen. –

+0

Es funktioniert, danke für Hilfe und ich wünsche Ihnen einen guten Tag :) – Ravencrest1985

Antwort

0

Gemäß Konfiguration.xml; InjectedBean1, InjectedBean2 werden keine Werte injiziert.

Also im Grunde InjectedBean1 und InjectedBean2 sind null.

Auf null versuchen Sie für erhalten Sie Operation, die Nullzeigerausnahme führt.

Das Hinzufügen von Ref zu InjectedBean1 und InjectedBean2 löst das Problem.

<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 und inject2 müssen definiert werden. Ich habe hier nicht enthalten. –