簡體   English   中英

將地圖從Spring applicationContext自動裝配到JSF bean中

[英]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名稱

因此,您得到的是MapMap 這將給你自己的Map ,也可以表示為其他豆類Map或者是Map 大多數PropertySource Bean就是這種情況,您可以在Bean的Map中獲得它。 systemEnvironment是所有環境變量),依此類推。

要修復,請在定義中添加@Qualifier("map")或使用@Resource而不是@Autowired

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM