弹簧表达式的弹簧属性分辨率

时间:2015-04-27 21:19:21

标签: spring spring-el

我想解析一个属性并使用Spel表达式指定属性的名称。如果我这样做

<property name="host" value="#{T(...Constants).SINK_PROP_HOST}" />

该值被正确解析为sink.host,这是此常量的值。更进一步

<property name="host" value="${#{T(...Constants).SINK_PROP_HOST}}" />

这不起作用。任何想法如何使它工作。基本上它应该与

相同
<property name="host" value="${sink.host}" />

1 个答案:

答案 0 :(得分:0)

你不能这样做,因为在SpEL之前解决了属性(你可以反过来这样做)。

这有效......

public class Foo {

    public static final String FOO = "foo.prop";

}


<util:properties id="props">
    <prop key="foo.prop">bar</prop>
</util:properties>

<bean id="xx" class="foo.Bar">
    <property name="foo" value="#{props[T(foo.Foo).FOO]}"/>
</bean>

当然,您可以从文件中加载“props”bean。