【发布时间】:2015-04-29 10:26:57
【问题描述】:
我有一个注入了地图的 bean。地图中的条目是 myBean 类型(见下文),并在我的 spring XML 中定义。可能不是 myBean 的所有属性都在 xml 中定义,所以我想我会以模板的形式提供默认值,其中模板中的变量位由另一个将存在的属性提供(下面的 p1)。我希望这是有道理的。
我相信还有其他方法可以实现这一点;好吧,我知道有,但我是 Spring 新手,我遇到了 Spring EL,听起来它适合这种事情,所以我尝试了这个:
<bean id="myDefaults" class="com.myco.MyDefaults">
<property name="prop1" value="abc#{this.p1}def"/>
</bean>
<bean id="myBean" class="com.myco.MyBean" abstract="true">
<property name="theDefaults" ref="myDefaults"/>
</bean>
在 MyBean 中 p1 的值为 100,我希望 theDefaults 的值为 abc100def,但我得到了一个错误:
Error creating bean with name 'myDefaults' defined in class path resource [myapp-spring.xml]:
Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is
org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Field or property 'this' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'
感谢您的帮助
保罗
【问题讨论】: