Spring中需要什么配置才能使用SpEL表达式?正确配置了SpEL表达式却无法使用

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)
阅读 6.1k
2 个回答
✓ 已被采纳新手上路,请多包涵

自己解决了问题,一个是因为song中没有toUpcase方法,一个是因为要把SpEL表达式所在的属性从ref改为value

提示写的很清楚song这个类里面没定义upcase这个方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题