什么是< hz:map>之间的区别applicationContext中创建的标记与< hz:config>中定义的标记相对应分割?
它们有什么关系?
我知道< hz:map>在applicationContext中会导致创建一个IMap类型的bean,当没有< hz:map>时它就不会在那儿.
但是,当定义了bean并且随后具有< hz:map>时,以下配置会执行什么操作?在hazelcast配置下具有相同的名称?
cope="singleton" />
fig>
eviction-policy="NONE" in-memory-format="BINARY">
eviction-policy="LRU" max-size="5000" invalidate-on-change="true"/>
fig>
最佳答案
cope="singleton" />
这将导致创建名为“loggedInUserMap”的bean(由id属性指向). Hazelcast上下文中的地图名称也将是“loggedInUserMap”(由name属性指向).
A< hz:map>标签内< hz:config>是指在创建IMap时可以使用的特定配置(此处称为MapConfig). hazelcast.xml中可能有许多这样的MapConfigs.一个MapConfig也可以使用通配符*由多个IMap共享.
如果您的MapConfig的名称与hazelcast上下文中使用的地图“name”匹配,则在创建该IMap对象时将使用该配置.在您的情况下,它是“loggedInUserMap”.
如果未找到,将使用名称为“default”的MapConfig创建该IMap对象.
如果未找到,则在创建该IMap对象时将使用IMap的默认值.
我认为以下示例将清楚地解决问题.
示例配置
fig>
eviction-percentage="30"
eviction-policy="NONE"/>
eviction-percentage="30"
eviction-policy="NONE"/>
P*"
backup-count="2" max-size="0"
time-to-live-seconds="10" eviction-percentage="30"
eviction-policy="NONE"/>
fig>
示例代码
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".
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。