我一直在尝试使用 Spring。我希望通过使用 SpEL 为另一个 bean 复制一个 bean 的值和引用属性。
考虑这个bean:
<bean id="kenny" class="com.springinaction.springidol.Instrumentalist">
<property name="song" value="#{'Jingle Bells'}" />
<property name="instrument" ref="piano" />
</bean>
我希望将其值复制到另一个 bean 中,如下所示:
<bean id="carl" class="com.springinaction.springidol.Instrumentalist">
<property name="song" value="#{kenny.song}" />
<property name="instrument" ref="#{kenny.instrument}" /> <-- I GET EXCEPTION OVER HERE
</bean>
但是,我对第二个属性有一个例外,因为它无法复制肯尼的仪器。歌曲被正确复制,没有任何异常被抛出
我得到这个例外:
线程“main” org.springframework.beans.factory.BeanCreationException 中的异常:创建类路径资源 [Beans.xml] 中定义的名称为“carl”的 bean 时出错:设置时无法解析对 bean '#{kenny.instrument}' 的引用bean 属性“仪器”;嵌套异常是 org.springframework.beans.factory.BeanExpressionException:表达式解析失败;嵌套异常是 org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 6): Field or property 'instrument' cannot be found on object of type 'com.springinaction.springidol.Instrumentalist'
知道如何复制仪器并将其设置为 id 为“carl”的 bean 吗?