我想解析一个属性并使用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}" />
答案 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。