在`value`标签内执行表达式

时间:2019-02-12 11:12:44

标签: java spring

我想这样做

docker node inspect self

其中<util:set id="datasources" value-type="java.lang.String"> <value>#{ '${processors}'.split(',') }</value> </util:set> 属性是列表processors。然后我希望在另一个bean中引用那个bean

processors=ITEM_1,ITEM_2

但是它不起作用-它不会拆分值,最后我得到了<util:map id="processors" key-type="java.lang.String" value-type="java.util.Set"> <entry key="processorTypes" value-ref="datasources"/> </util:map> 键内的所有值。

但是当我像这样直接设置processorTypes

value

它工作正常,并向我提供了该键的一组值。

怎么了?

1 个答案:

答案 0 :(得分:1)

我在这里看到的两件事。首先,您将处理器作为字符串和映射ID,这可能会使Spring感到困惑。其次,您的SpEL定义不正确。这是建议的解决方案。

    <util:map id="processors" key-type="java.lang.String" value-type="java.util.Set">
        <entry key="processorTypes" value-ref="sourcesSet"/>
    </util:map>

    <bean id="sourcesSet" class="java.util.HashSet">
        <constructor-arg value="#{list.split(',')}"/>
    </bean>

    <bean id="list" class="java.lang.String">
        <constructor-arg value="ITEM_1,ITEM_2"/>
    </bean>