[英]Spring Beans - how to wire null as a constructor arg?
我定义了以下bean:
<bean id="myBean" class="com.me.myapp.Widget">
<constructor-arg name="fizz" value="null"/>
<constructor-arg name="buzz" ref="someOtherBean" />
</bean>
当我运行我的应用程序时,Spring会抛出一个bean配置异常:
[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
就像我写下面的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无法将您提到的有序值注入构造函数中。 如果你尝试使用显式排序,那就更好了
<constructor-arg index="0" name="fizz"><null/></constructor-arg>
<constructor-arg index="1" name="buzz"><ref bean="someOtherBean"/></constructor-arg>
实际上,这对我不起作用,
所以我所做的是, 不是通过spring传递对象,而是询问“对象是否为null”,并创建New对象并将其分配给它,
它也做了一次(类似于spring),区别在于,它不是最佳实践,而且对象的创建点在类的流程中,而不是在早期阶段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.