spring 属性 来自 spring 表达式的解析

spring property resolution from a spring expression

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

你不能那样做,因为属性在 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。