XML中配置如下:
<bean id="singer" class="com.zdz.bean.Singer" init-method="warmUp" destroy-method="thank">
<property name="song" ref="song"></property>
</bean>
<bean id="mocker" class="com.zdz.bean.Mocker">
<property name="song" ref="#{singer.song.toUpcase()}">
</property>
</bean>
出错信息如下:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mocker' defined in class path resource [beans.xml]: Cannot resolve reference to bean '#{singer.song.toUpcase()}' while setting bean property 'song'; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 12): Method call: Method toUpcase() cannot be found on com.zdz.util.Song type
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1477)
自己解决了问题,一个是因为song中没有toUpcase方法,一个是因为要把SpEL表达式所在的属性从ref改为value