春豆 – 如何将null作为构造函数arg?
我定义了下面的bean:
<bean id="myBean" class="com.me.myapp.Widget"> <constructor-arg name="fizz" value="null"/> <constructor-arg name="buzz" ref="someOtherBean" /> </bean>
当我运行我的应用程序时,Spring引发一个beanconfigurationexception:
[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
我只是想创build一个Widget
就像我会写如下的Java:
Widget w = new Widget(null, someOtherBean);
我怎样才能做到这一点? 提前致谢!
你可以使用Spring的<null>
标签:
<bean id="myBean" class="com.me.myapp.Widget"> <constructor-arg name="fizz"> <null /> </constructor-arg> <constructor-arg name="buzz" ref="someOtherBean" /> </bean>
有时候spring不能将你提到的顺序的值注入到构造函数中。 如果你尝试明确的sorting,比如更好
<constructor-arg index="0" name="fizz"><null/></constructor-arg> <constructor-arg index="1" name="buzz"><ref bean="someOtherBean"/></constructor-arg>
这其实并不适合我,
所以我所做的是不通过spring传递对象,而是询问“对象是否为null”,并创buildNew对象并将其分配给它,
也是一次(类似于spring),不同之处在于,这不是最好的做法,而是客体的创作点在阶级的stream动中,而不是在早期阶段。