<hz:map id="loggedInUserMap" name="loggedInUserMap"
instance-ref="ipds" scope="singleton" />
這將導致創建一個名爲豆 'loggedInUserMap'(由id
屬性指向)。 Hazelcast上下文中的地圖名稱也將「loggedInUserMap」(由name
屬性指出)。
A <hz:map>
<hz:config>
內部的標記是指在創建IMap
(這裏稱爲MapConfig
)時可以使用的特定配置。在hazelcast.xml中可能有很多這樣的MapConfigs
。一個MapConfig
也可以由多個IMaps共享,並使用通配符*
。
如果您有一個與name
匹配的MapConfig,它與hazelcast上下文中使用的地圖「名稱」匹配,那麼將在創建該IMap對象時使用該配置。你的情況是「loggedInUserMap」。
如果沒有找到,MapConfig名稱爲「默認」將被用於創建IMAP對象。
如果沒有找到,則默認對IMAP將同時創建IMAP對象使用。
我覺得下面的例子將事情了明確分類。
樣本配置
<hz:config>
<hz:instance-name>${hz.instance.name}</hz:instance-name>
<hz:group name="${hz.group.name}" password="${hz.group.password}"/>
<hz:map name="default"
backup-count="2" max-size="0"
time-to-live-seconds="25" eviction-percentage="30"
eviction-policy="NONE"/>
<hz:map name="userMap"
backup-count="2" max-size="0"
time-to-live-seconds="6000" eviction-percentage="30"
eviction-policy="NONE"/>
<hz:map name="FruitMap*"
backup-count="2" max-size="0"
time-to-live-seconds="10" eviction-percentage="30"
eviction-policy="NONE"/>
</hz:config>
<hz:map instance-ref="ipds" id="userMapSpringId" name="userMap" />
<hz:map instance-ref="ipds" id="mangoMapSpringId" name="FruitMap1" />
<hz:map instance-ref="ipds" id="appleMapSpringId" name="FruitMap2" />
<hz:map instance-ref="ipds" id="alientFruitMapSpringId" name="AlienFruit" />
示例代碼
IMap map1 = (IMap) ctx.getBean("userMapSpringId");
// map1 will make use of the configuration with name "userMap"
IMap map2 = (IMap) ctx.getBean("mangoMapSpringId");
IMap map3 = (IMap) ctx.getBean("appleMapSpringId");
// Here two different IMaps objects are created.
// However both map2 and map3 will make use of the same configuration "FruitMap*".
IMap map4 = (IMap) ctx.getBean("alientFruitMapSpringId");
// In the case of map4, there is no configuration which matches its hazelcast name
// (AlienFruit). Hence it will make use of the configuration with name "default".
希望與評論的代碼段是不言自明。
謝謝。可能是hazelcast的人可以修改xml標籤,使其自我解釋。 – Manish
誠然,重命名的xml標記可能會在此時創建兼容性問題(儘管很小)。但是,可以修改文檔以清楚地陳述事實,可以舉一個例子。 – Dinesh