単純な例を使用して、参照メソッド注入を実現しようとしています。しかし、メソッドを介して注入されたBeanの取得に失敗するようです。Spring Lookupメソッドの注入が機能しない
私は単純な豆を持っています。私はつまり、別の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プロパティにnullポインタ例外を取得
PropertyBean pb = (PropertyBean) ctx.getBean("propertybean");
System.out.println(pb.toString());
私が間違って何をしているのですか?私は何かを見逃しましたか、そこに何か愚かなものを見落としていますか? Spring 3.0 reference (section 3.4.6.1)は同じことをしているようです。
Spingリンクの違いは、 'scopebean =' prototype''を 'propertybean'に入れた点です。それを削除してみてください – Cratylus
申し訳ありません!私の間違い。コードを修正しました –