Spring按类型自动装配注入数组、集合、Map时,是把应用上下文中对应类型的bean装配进集合,而不是直接查找一个对应类型的集合然后注入。以下面这段代码为例:
@Component
public class WmsProtocolFactory {
@Autowired
private Map<String, WmsRemoteProtocol> mediaPlayerMap;
@Autowired
private WmsRemoteProtocol[] addr;
@Autowired
private List<WmsRemoteProtocol> list;
HashMap<Object,WmsRemoteProtocol> map = Maps.newHashMap();
public WmsProtocolFactory(List<WmsRemoteProtocol> wmsRemoteProtocolList){
for(WmsRemoteProtocol wmsRemoteProtocol :wmsRemoteProtocolList){
map.put(wmsRemoteProtocol.getType(),wmsRemoteProtocol);
}
}
public void printInfo(){
System.out.println("map----->"+mediaPlayerMap);
System.out.println("数组----->"+addr);
System.out.println("集合----->"+list);
System.out.println("定制map----->"+map);
}
/**
* 功能描述:
* 获取远程调用的具体实现
*
* @param:
* @return:
* @auther: baojl514
*/
public WmsRemoteProtocol getProtocol(String chnlCode){
return map.get(chnlCode);
}
}
下面是打印出来的各种类型
map----->{infoWmsComp=com.csj.tiger.service.wms.InfoWmsComp@2ba7828b, sharkWmsComp=com.csj.tiger.service.wms.SharkWmsComp@1e686da2, defaultVirtualClient=com.csj.tiger.chnl.routing.DefaultVirtualProtocol@51653509, jmarsWmsComp=com.csj.tiger.jmars.component.impl.JmarsWmsComp@7abe3d53, misComp=com.csj.tiger.mis.component.impl.MisComp@43347199}
数组----->[Lcom.csj.tiger.chnl.routing.WmsRemoteProtocol;@1e5bac73
集合----->[com.csj.tiger.service.wms.InfoWmsComp@2ba7828b, com.csj.tiger.service.wms.SharkWmsComp@1e686da2, com.csj.tiger.chnl.routing.DefaultVirtualProtocol@51653509, com.csj.tiger.jmars.component.impl.JmarsWmsComp@7abe3d53, com.csj.tiger.mis.component.impl.MisComp@43347199]
定制map----->{0=com.csj.tiger.chnl.routing.DefaultVirtualProtocol@51653509, SHARK=com.csj.tiger.service.wms.SharkWmsComp@1e686da2, JMARS=com.csj.tiger.jmars.component.impl.JmarsWmsComp@7abe