2012-10-17 12 views
35

Ich habe die folgende Bohne definiert:Spring Beans - wie NULL als Konstruktor arg verdrahten?

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

Wenn ich meine app laufen, wirft Frühling eine Bohne Config Ausnahme:

[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 

Ich möchte nur ein Widget wie ich würde erstellen, wenn ich das schrieb folgende Java:

Widget w = new Widget(null, someOtherBean); 

Wie kann ich das tun? Danke im Voraus!

Antwort

74

können Sie Spring verwenden <null> tag:

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

Manchmal Frühjahr die Werte in der geordneten einzuspritzen versagt Sie haben in einen Konstruktor erwähnt. Es ist besser, wenn Sie mit ausdrücklicher Bestellung versuchen, das heißt

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

dies war eigentlich nicht für mich arbeiten,

so, was ich habe, ist getan, nicht das Objekt durch Frühling vorbei, aber „wenn das Objekt null“, und erstellen sie neues Objekt zu fragen, und weisen sie ihn,

es auch einmal getan wird (ähnlich Feder), der Unterschied ist, dass es nicht die besten Praxis ist, und der Schöpfungspunkt des Objekts ist in der Fluss der Klasse, und nicht in einem frühen Stadium.

Verwandte Themen