是Map <string,collection <object =“”>&gt;可以在Spring中声明

时间:2015-10-27 13:42:46

标签: java spring spring-bean

我有一个包含以下构造函数的类:

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>的内容。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

此配置应该有效:

<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>