我想用一個簡單的例子來實現查找方法注射。但是,似乎無法通過該方法注入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
到另一個豆即; 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 reference (section 3.4.6.1)似乎也是這樣做的。
在Sping鏈接中,不同之處在於您將'scope =「prototype」'放在'propertybean'中。嘗試刪除那 – Cratylus 2012-01-14 10:51:20
哎呀..對不起!我的錯。我已更正了代碼 – 2012-01-14 10:54:06