我想这么做
<util:set id="datasources" value-type="java.lang.String"> <value>#{ '${processors}'.split(',') }</value> </util:set>
哪里 processors 属性是列表 processors=ITEM_1,ITEM_2 . 然后我希望在另一个bean中引用该bean
processors
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 关键。
processorTypes
但当我设置 value 直接像这样
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>