Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何初始化Iterable<;地图入口<;字符串,字符串>&燃气轮机;在SpringXML配置中?_Xml_Spring_Atlassian Crowd - Fatal编程技术网

如何初始化Iterable<;地图入口<;字符串,字符串>&燃气轮机;在SpringXML配置中?

如何初始化Iterable<;地图入口<;字符串,字符串>&燃气轮机;在SpringXML配置中?,xml,spring,atlassian-crowd,Xml,Spring,Atlassian Crowd,我想初始化具有以下属性的bean: private Iterable<Map.Entry<String, String>> groupToAuthorityMappings; 我无法更改bean,因为它来自提供的库。 有人知道我如何才能实现我的目标吗?与其在SpringXML中尝试创建iterables,我会使用这种方法。为bean创建工厂: public class ThirdPartyBeanFactory { public ThirdPartyBean

我想初始化具有以下属性的bean:

private Iterable<Map.Entry<String, String>> groupToAuthorityMappings;
我无法更改bean,因为它来自提供的库。
有人知道我如何才能实现我的目标吗?

与其在SpringXML中尝试创建iterables,我会使用这种方法。为bean创建工厂:

public class ThirdPartyBeanFactory {

    public ThirdPartyBean getInstance(Map<String,String> map) {
        ThirdPartyBean tpb = new ThirdPartyBean(); //This is the provided object you cant change
        tpb.setGroupToAuthorityMappings(map.entrySet());
        return tpb;
    }
}
公共类第三方BeanFactory{
公共第三方bean getInstance(映射){
ThirdPartyBean tpb=新的ThirdPartyBean();//这是您不能更改的提供对象
setGroupToAuthorityMappings(map.entrySet());
返回tpb;
}
}
然后是XML 首先创建工厂实例(thirdPartyBeanFactory)和映射(mapBean),然后像这样定义bean:

<bean id="thirdPartyBean" factory-bean="thirdPartyBeanFactory"
        factory-method="getInstance">
    <constructor-arg ref="mapBean" />
</bean>

如果要将此数据定义为
映射
,则可以使用
工厂方法
获取条目的迭代器:

<util:map id='groupToAuthority>
    <beans:entry key="some-group" value="specific-authority-for-group" />
    ...
</util:map>

<bean class='ClassRequiringAnIterable'>
    <constructor-arg>
        <bean factory-bean='groupToAuthority' factory-method='entrySet'/>
    </constructor-arg>
</bean>

事实上,我的地图不能这样工作。我会更新我的问题。我尝试了您的代码,但我无法创建beans:map作为beans:beans的直接子级。如何声明它?好的,我成功地解决了我的问题:1)添加并在xsi:schemaLocation中2)在beans:beans中添加xmlns:util=”“3)使用而不是按照您的答案中的建议4)构造函数arg不适合该属性,我使用了:
<bean id="thirdPartyBean" factory-bean="thirdPartyBeanFactory"
        factory-method="getInstance">
    <constructor-arg ref="mapBean" />
</bean>
<util:map id='groupToAuthority>
    <beans:entry key="some-group" value="specific-authority-for-group" />
    ...
</util:map>

<bean class='ClassRequiringAnIterable'>
    <constructor-arg>
        <bean factory-bean='groupToAuthority' factory-method='entrySet'/>
    </constructor-arg>
</bean>