Map<String, Collection<Object>> 是否可以在 Spring 中声明

Is Map<String, Collection<Object>> possible to declare in Spring

我有一个 class 具有以下构造函数:

public MyClass(Map<String s, Collection<Object>> co){
    //impl
}

我需要通过 Spring bean 的声明来调用它。我试着做这样的事情:

<bean id="toInject" class="path.toSomClass" />

<bean id="myBean" class="path.to.MyClass">
    <constructor-arg>
        <map>
            <entry key="String" 
        value-ref="_WHAT_SHOULD_I_WRITE_HERE_TO_DECLARE_A_COLLECTION_FROM_THE_ONLY_toInject">
        </map>
    </constructor-arg>
</bean>

我不关心 Collection 的类型(它可能是 List<T> 以及 Set<T>,或者任何其他实现 Collection<T> 的类型)。

您可以将 <list> 元素声明为条目值的一部分,如下所示:

<bean id="myBean" class="path.to.MyClass">
    <constructor-arg>
        <map>
            <entry key="String">
                <list>
                    <ref bean="toInject" />
                </list>
            </entry>
        </map>
    </constructor-arg>
</bean>

依赖注入发生在运行时,因此此时不再存在类型参数。

此配置应该有效:

<bean id="myBean" class="path.to.MyClass">
    <constructor-arg>
        <map>
            <entry key="String">
                <list>
                     <value>Your value here, or</value>
                     <ref bean="yourBeanHere" />
                </list>
            </entry>
        </map>
    </constructor-arg>
</bean>