【发布时间】:2012-01-14 10:25:04
【问题描述】:
我正在尝试使用一个简单的示例来实现查找方法注入。但是,似乎无法通过该方法注入 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 注入另一个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 没有被注入!!)
PropertyBean pb = (PropertyBean) ctx.getBean("propertybean");
System.out.println(pb.toString());
我做错了什么?我错过了什么还是我在那里忽略了一些愚蠢的东西!? Spring 3.0 reference (section 3.4.6.1) 似乎也在做同样的事情。
【问题讨论】:
-
在 Sping 链接中,不同之处在于您将
scope="prototype"放入您的propertybean。尝试删除它 -
哎呀..对不起!我的错。我已经更正了代码
标签: java spring inversion-of-control spring-3