如何初始化Iterable<;地图入口<;字符串,字符串>&燃气轮机;在SpringXML配置中?
我想初始化具有以下属性的bean:如何初始化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
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>