2016-09-07 53 views
1

這是我在Spring上下文的HashMap它利用價值的參考:春天的HashMap值裁判關鍵點值REF命名

<util:map id="generalDAOMap" map-class="java.util.HashMap"> 
     <entry key="1" value-ref="userDAO" /> 
     <entry key="2" value-ref="accountsDAO" /> 
     <entry key="3" value-ref="settingsDAO" />  
</util:map> 
<bean id="userDAO" 
     class="com.test.myproj.dao.impl.UserDAOImpl" /> 
<bean id="accountsDAO" 
     class="com.test.myproj.dao.impl.AccountsDAOImpl" /> 
<bean id="settingsDAO" 
     class="com.test.myproj.dao.impl.SettingsDAOImpl" /> 

在我的Java類中我已經自動連接了「generalDAOMap」如下:

@AutoWired 

private Map<String,GeneralDAO> generalDAOMap; 

//getters and setters follows 

當我打印映射值其如下:

{userDAO = [email protected],accountsDAO = [email protected] , settingsDAO = [email protected]} 

但關鍵值應爲「1」,「2」和「3」,其原因被替換爲「userDAO」,「settingsDAO」和「accountsDAO」,因此當我使用getGeneralDAOMap.get(「1」)時,它返回null。請幫助。

回答

1

你可以嘗試使用@Resource而不是使用@Autowired

Spring docs說這個,

由於這種語義差異的具體結果,那是他們自己定義爲一個集合或地圖類型無法通過@Autowired注入豆,因爲配型不正確適用於它們。對這些bean使用@Resource,通過唯一名稱引用特定的集合或映射bean。

+0

非常感謝,它工作得很好!!!! – user1058913

0

你可以試試...

<util:map id="generalDAOMap" map-class="java.util.HashMap"> 
      <entry key="1"> 
       <bean class="com.test.myproj.dao.impl.UserDAOImpl" /> 
      </entry>  
      <entry key="2"> 
       <bean class="com.test.myproj.dao.impl.AccountsDAOImpl" /> 
      </entry>  
      <entry key="3"> 
       <bean class="com.test.myproj.dao.impl.SettingsDAOImpl" /> 
      </entry>  
    </util:map> 
+0

仍然是相同的錯誤null ...現在地圖內容沒有什麼可打印的。 – user1058913