春天EL模板在春天豆定义

时间:2015-04-29 10:26:57

标签: spring spring-el

我有一个注入了地图的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'

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

变量是#this,而不是this,但无论如何,在这种情况下不需要它,这是隐含的。

使用value="abc#{p1}def"