[英]Autowiring Map from Spring applicationContext into JSF bean
我有JSF 2.0 + Spring項目,當我嘗試將Spring bean自動裝配到JSF bean中時,發生了一些奇怪的事情。 這是我的applicationContext示例:
<context:component-scan base-package="com.ticketfront" />
<util:map id="map" >
<entry key="rp">
<util:map>
<entry key="9003" value="RegP"/>
</util:map>
</entry>
</util:map>
這是我的jSF bean的一部分:
@Named
@Scope("session")
public class TicketViewBean implements Serializable {
@Autowired
Map<String, Map<String, String>> map;
}
部署運行成功,但是在我的jsf bean自動裝配屬性映射中,第一個條目是正常的,就像我在applicationContext中配置的一樣,但是映射中還有很多其他條目。 例如:
map = (java.util.LinkedHashMap) {map={rp={9003=RegP}}, systemEnvironment={USERPROFILE=C:\Users\Administrator, JAVA_HOME=C:\Program Files\Java\jdk1.7.0_40, NB_EXEC_TOMCAT_START_PROCESS_UUID=tomcat70:home=C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.34:base=apache-tomcat-7.0.34.0_base, SystemDrive=C:, JPDA_TRANSPORT=dt_shmem, CURRENT_DIR=C:\Program Files\Apache Software Foundation\Ap
還有許多其他不同的東西,甚至是WEB-XML。
我完全困惑為什么會這樣
如前所述這里的春天參考指南
只要預期的鍵類型是
String
即使是鍵入的Map都可以自動裝配。Map
值將包含所有預期類型的bean ,並且鍵將包含相應的bean名稱 :
因此,您得到的是Map
的Map
。 這將給你自己的Map
,也可以表示為其他豆類Map
或者是Map
。 大多數PropertySource
Bean就是這種情況,您可以在Bean的Map
中獲得它。 ( systemEnvironment
是所有環境變量),依此類推。
要修復,請在定義中添加@Qualifier("map")
或使用@Resource
而不是@Autowired
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.