2015-10-20 10 views
6

<hz:map>タグとapplicationContextで作成されたタグとの違いと<hz:config>セグメントで定義されているものとの違いは何ですか?ヘーゼルキャストスプリング設定

どのように関係していますか?

<hz:map>applicationContextであると、IMap型のBeanが作成され、<hz:map>が存在しない場合は発生しません。

しかし、定義済みのBeanが存在し、その後、ヘイルキャスト設定で同じ名前の<hz:map>がある場合、次の設定はどうなりますか?

<hz:map id="loggedInUserMap" name="loggedInUserMap" instance-ref="ipds" scope="singleton" /> 
<hz:hazelcast id="ipds"> 

     <hz:config> 

      <hz:instance-name>${hz.instance.name}</hz:instance-name> 
      <hz:group name="${hz.group.name}" password="${hz.group.password}"/> 

      <hz:map name="loggedInUserMap" backup-count="1" eviction-policy="NONE" in-memory-format="BINARY"> 
       <hz:near-cache time-to-live-seconds="0" max-idle-seconds="60" 
           eviction-policy="LRU" max-size="5000" invalidate-on-change="true"/> 
      </hz:map> 

     </hz:config> 

    </hz:hazelcast> 

答えて

3
<hz:map id="loggedInUserMap" name="loggedInUserMap" 
      instance-ref="ipds" scope="singleton" /> 

これはという名前のBeanの作成につながる 'loggedInUserMap'(id属性が指します)。 Hazelcastコンテキストのマップの名前は "loggedInUserMap"(name属性によって示されます)でもあります。 <hz:config>内部

A <hz:map>タグ(ここでMapConfigと呼ぶことによる)IMapを作成する際に使用することができる具体的な構成を指します。 hazelcast.xmlにはMapConfigsのようなものがたくさんあります。 1つのMapConfigは、ワイルドカード*を使用して複数のIMAPでも共有できます。

hazelcastコンテキストで使用されているマップ "name"に一致するnameのMapConfigがある場合、その構成はそのIMapオブジェクトの作成時に使用されます。あなたの場合、それは "loggedInUserMap"です。

見つからない場合は、そのIMapオブジェクトの作成に「default」という名前のMapConfigが使用されます。

見つからない場合は、そのIMapオブジェクトの作成時にIMapのデフォルトが使用されます。

次の例は、物事をはっきりと並べ替えると思います。

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". 

サンプルコンフィグ

<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" /> 

サンプル・コードは、私がコメント付きのコードスニペットは自明であることを望みます。

+0

ありがとうございました。ヘイルキャストの人はxmlタグを修正して自明にすることができるかもしれません。 – Manish

+0

真実ですが、XMLタグの名前を変更すると、この時点で互換性の問題が発生する可能性があります。しかし、事実を明確に述べるように文書を修正することができ、例を挙げることができます。 – Dinesh

関連する問題