java.lang.String的Spring Instantiation异常

时间:2014-07-22 21:30:57

标签: java spring

以下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

2 个答案:

答案 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)

我建议移动latest version of Spring - 4.0.6.RELEASE

答案 1 :(得分:0)

String类有许多单参数构造函数,因此Spring可以选择错误的构造函数,因此异常。

我怀疑它是在较新版本的Spring中发生的。您说您使用Spring 2there is a bug related to this。但它似乎在较新版本中得到修复。

bug report表示它已在版本3.0.3中修复。