以下bean有什么问题?使用spring-beans-2.0我得到以下异常:
<bean id="logger" class="java.lang.String">
<constructor-arg value="logger"/>
</bean>
记录器bean反对:
<bean id="loggerType" class="java.lang.String" scope="prototype">
<constructor-arg value="logger" />
</bean>
loggerbean注入正确的参数为“java.lang.String”的其他bean。
异常
Could not instantiate bean class [java.lang.String]: Illegal arguments for constructor;
nested exception is java.lang.IllegalArgumentException:
java.lang.ClassCastException@5083198c
答案 0 :(得分:1)
如果您注入另一个bean,则使用ref
属性而不是value
属性。
<bean id="loggerType" class="java.lang.String" scope="prototype">
<constructor-arg ref="logger" />
</bean>
或使用<ref/>
标记bean
作为属性
<bean id="loggerType" class="java.lang.String" scope="prototype">
<constructor-arg>
<ref bean="logger"/>
</constructor-arg>
</bean>
有关详细信息,请查看 Spring文档 References to other beans (collaborators)
答案 1 :(得分:0)
String
类有许多单参数构造函数,因此Spring
可以选择错误的构造函数,因此异常。
我怀疑它是在较新版本的Spring
中发生的。您说您使用Spring 2
和there is a bug related to this。但它似乎在较新版本中得到修复。
bug report表示它已在版本3.0.3
中修复。