Domanda

Sto cercando di ottenere l'iniezione del metodo di ricerca usando un semplice esempio. Ma sembra fallire nell'iniezione del fagiolo tramite il metodo.

Ho un fagiolo semplice, vale a dire; Demobeo come di seguito:

public class DemoBean {

    private String message;

    public DemoBean() {

    }

    public DemoBean(String message) {
        this.message = message;
    }

    // Getter and Setter methods

    @Override
    public String toString() {
        return "DemoBean{" +
                "message='" + message + '\'' +
                '}';
    }
}

Sto cercando di iniettare DemoBean In un altro fagiolo, vale a dire; PropertyBean:

public abstract class PropertyBean {

    private DemoBean bean;
    private String message;
    // other members...

    public PropertyBean(String message) {
        this.message = message;
    }

    // Getter and Setter methods...

    // Method for lookup injection
    protected abstract DemoBean createBean();

    @Override
    public String toString() {
        return "PropertyBean{" +
                "bean=" + bean.toString() +
                ", message='" + message + '\'' +
                ", number=" + number +
                '}';
    }
}

Noe, c'è la configurazione dei miei fagioli:

<bean id="demobean" class="aro.discoverspring.beans.DemoBean" scope="prototype">
<property name="message" value="The Default Message!!!" />
</bean>

<bean id="propertybean" class="aro.discoverspring.beans.PropertyBean">
<constructor-arg name="message" value="A message in PropertyBean"/>
<lookup-method name="createBean" bean="demobean" />
</bean>

Quando prova a creare un'istanza di PropertyBean. Sono in grado di farlo. Ma quando faccio quanto segue .. ottengo l'eccezione del puntatore nullo sulla proprietà demobea (perché il fagiolo non viene iniettato !!)

PropertyBean pb = (PropertyBean) ctx.getBean("propertybean");       
System.out.println(pb.toString());

Che cosa sto facendo di sbagliato? Mi sono perso qualcosa o sto trascurando qualcosa di sciocco lì!?RIFERIMENTO SPRING 3.0 (Sezione 3.4.6.1) Sembra che stia facendo lo stesso.

È stato utile?

Soluzione

bean La proprietà non dovrebbe essere iniettata. Come capisco gli implementazioni di primavera createBean metodo per te, quindi quando chiami pb.createBean() Dovrebbe restituire l'istanza di DemoBean. Ma non assegni nulla a bean Proprietà in ProperyBean Quindi non c'è modo per non essere nullo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top