Я экспериментировал с Spring. Я хочу скопировать свойства компонента и ссылочные свойства для другого компонента, используя SpEL.Использование SpEL для копирования ссылок на бобы не работает
Рассмотрим этот компонент:
<bean id="kenny" class="com.springinaction.springidol.Instrumentalist">
<property name="song" value="#{'Jingle Bells'}" />
<property name="instrument" ref="piano" />
</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>
Однако я получаю исключение для второго prpoperty как это не удастся скопировать интонацию Кенни. Песня правильно скопирована без каких-либо исключений бросают
Я получаю это исключение:
Исключения в потоке «основной» org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем «Карлу ', определенный в ресурсе пути класса [Beans.xml]: Невозможно разрешить ссылку на bean' # {kenny.instrument} ' при настройке bean property' instrument '; вложенное исключение: org.springframework.beans.factory.BeanExpressionException: выражение не удалось выполнить синтаксический анализ; вложенное исключение составляет org.springframework.expression.spel.SpelEvaluationException: EL1008E: (поз 6): Поле или свойство 'инструмент' не может быть найден на объект типа 'com.springinaction.springidol.Instrumentalist'
Любая идея, как я могу скопировать инструмент и установить его для bean с идентификатором «carl», пожалуйста?
Спасибо, что работает. Единственная причина, по которой я добавил ссылку, потому что инструмент Кенни имеет в виду также фасоль. – Goaler444
Не имеет значения, что источником свойства Кенни был боб; в точке разрешения эта связь потеряна - вы можете использовать 'ref =" фортепиано "или' value = "# {kenny.instrument}'. –