0

私は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>

ただし、ケニーの楽器をコピーできないため、2番目のプロパティの例外が発生します。曲は例外がスローされることなく正しくコピーされます

私はこの例外を受け取ります:

スレッド "main" org.springframework.beans.factory.BeanCreationException での例外: クラスパス リソース [Beans.xml] で定義された名前 'carl' の Bean の作成中にエラーが発生しました: 設定中に Bean '#{kenny.instrument}' への参照を解決できませんBean プロパティ 'instrument'; ネストされた例外は org.springframework.beans.factory.BeanExpressionException: 式の解析に失敗しました。ネストされた例外は org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 6): フィールドまたはプロパティ 'instrument' がタイプ 'com.springinaction.springidol.Instrumentalist' のオブジェクトに見つかりません

楽器をコピーして、ID「carl」のBeanに設定する方法を教えてください。

4

1 に答える 1

3

Arefは別の Bean への参照です。あなたの場合、 Beanのinstrumemtプロパティの値を使用したいと考えています。kenny

使用する必要があります

 <property name="instrument" value="#{kenny.instrument}" />

getInstrument()これは、 にメソッドがあることを前提としていInstrumentalistます。

于 2013-07-06T19:47:01.337 に答える