2012-10-17 10 views
35

私は、次のBeanが定義されています:Spring Beans - コンストラクタargとしてnullを配線する方法は?

[java] Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'myBean' defined in class path resource [spring-config.xml]: 
Unsatisfied dependency expressed through constructor argument with index 0 
of type [com.me.myapp.Widget]: Could not convert constructor argument value of 
type [java.lang.String] to required type [com.me.myapp.Widget]: Failed to 
convert value of type 'java.lang.String' to required type 
'com.me.myapp.Widget'; nested exception is java.lang.IllegalStateException: 
Cannot convert value of type [java.lang.String] to required 
type [com.me.myapp.Widget]: no matching editors or conversion strategy found 

は、私はちょうどWidget私が書いた場合、私は希望などを作成したい:

<bean id="myBean" class="com.me.myapp.Widget"> 
    <constructor-arg name="fizz" value="null"/> 
    <constructor-arg name="buzz" ref="someOtherBean" /> 
</bean> 

私は私のアプリを実行して、春は、Beanの設定例外がスローされます次のJava:

Widget w = new Widget(null, someOtherBean); 

どうすればいいですか?前もって感謝します!春は、あなたがコンストラクタに言及している発注の値を注入するために失敗した

<bean id="myBean" class="com.me.myapp.Widget"> 
    <constructor-arg name="fizz"> 
      <null /> 
    </constructor-arg> 
    <constructor-arg name="buzz" ref="someOtherBean" /> 
</bean> 

答えて

74

あなたは春の<null>タグを使用することができます。それはあなたが明示的な順序付けをしようとした場合、すなわち

<constructor-arg index="0" name="fizz"><null/></constructor-arg> 
<constructor-arg index="1" name="buzz"><ref bean="someOtherBean"/></constructor-arg> 
0

これは私のために働いていない、実際にあった、良いでしょう

ので、私がやったものです、は春を通じてオブジェクトを渡していない、 けど「オブジェクトがnullの場合」尋ねると、

それはまた(春と同様に)一度行われ、新しいオブジェクトを作成し、それに割り当て、 違いは最高プラクティスではありません、そして、ということですオブジェクトの作成ポイントはクラスの流れであり、初期の段階ではない。

関連する問題