gpt4 book ai didi

java - Spring Lookup方法注入(inject)不起作用

转载 作者:行者123 更新时间:2023-12-01 15:35:49 24 4
gpt4 key购买 nike

我正在尝试使用一个简单的示例来实现查找方法注入(inject)。但是,似乎无法通过该方法注入(inject) bean。

我有一个简单的bean; 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 注入(inject)另一个 bean;属性Bean:

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 配置:

<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 属性上遇到空指针异常(因为 bean 没有被注入(inject)!!)

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

我做错了什么?我错过了什么或者我忽略了一些愚蠢的东西吗? Spring 3.0 reference (section 3.4.6.1)似乎也在做同样的事情。

最佳答案

不应注入(inject)

bean 属性。据我了解,spring 为您实现了 createBean 方法,因此当您调用 pb.createBean() 时,它应该返回 DemoBean 的实例。但是您没有为 ProperyBean 中的 bean 属性分配任何内容,因此它不可能不为 null。

关于java - Spring Lookup方法注入(inject)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8861605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com