我想做这个
<util:set id="datasources" value-type="java.lang.String">
<value>#{ '${processors}'.split(',') }</value>
</util:set>
其中
processors
属性是列表processors=ITEM_1,ITEM_2
。然后我希望在另一个bean中引用那个bean<util:map id="processors" key-type="java.lang.String" value-type="java.util.Set">
<entry key="processorTypes" value-ref="datasources"/>
</util:map>
但这是行不通的-它不会拆分值,最后我得到了所有
processorTypes
键中的值。但是当我像这样直接设置
value
时<entry key="processorTypes" value="#{ '${processors}'.split(',') }"/>
它工作正常,并为我提供了该键的一组值。
怎么了?
最佳答案
我在这里看到的两件事。首先,您将处理器作为字符串和映射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>