Прыжок методом Spring Lookup не работает - PullRequest
0 голосов
/ 14 января 2012

Я пытаюсь добиться внедрения метода поиска на простом примере. Но, похоже, не удается ввести боб с помощью метода.

У меня есть простой боб, а именно; DemoBean, как показано ниже:

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 + '\'' +
                '}';
    }
}

Я пытаюсь ввести DemoBean в другой боб, а именно; 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 +
                '}';
    }
}

Нет, моя конфигурация бобов:

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

При попытке создать экземпляр PropertyBean. Я могу это сделать. Но когда я делаю следующее ... я получаю исключение нулевого указателя на свойство DemoBean (потому что бин не вводится !!)

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

Что я делаю не так? Я что-то пропустил или я что-то упустил? Ссылка на Spring 3.0 (раздел 3.4.6.1) похоже делает то же самое.

1 Ответ

1 голос
/ 14 января 2012

bean свойство не должно быть введено.Как я понимаю, Spring реализует для вас метод createBean, поэтому при вызове pb.createBean() он должен вернуть экземпляр DemoBean.Но вы ничего не присваиваете свойству bean в ProperyBean, поэтому нет никакого способа, чтобы оно не было нулевым.

...