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

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)

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


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

【热门文章】
【热门文章】