使用字符串 bean 作为 SPEL 中的键从映射中获取值

Get value from map using a String bean as a key in SPEL

我想知道如何使用字符串 bean 作为键从 spring 定义的映射中获取值。

我在 xml 中定义了以下地图:

<bean id="myMap" class="java.util.HashMap">
    <constructor-arg>
        <util:map>
            <entry key="key1" value="Value1"/>
            <entry key="key2" value="Value2"/>
        </util:map>
    </constructor-arg>
</bean>

我有以下简单的字符串 bean:

<bean id="mySimpleString" class="java.lang.String">
    <constructor-arg value="key1"/>
</bean>

为了获得我在 xml 中使用 SPEL 的值,如下所示:

<bean class="com.my.MyClass">
    <property name="someProp" value="#{myMap[#mySimpleString]}"/>
</bean>

然后我的 someProp 值变成空值。

我做错了什么?

因为 myMap 是一个 Map 你应该使用 #get() 方法来检索值。 这会起作用

<property name="someProp" value="#{myMap.get(mySimpleString)}"/>