2012-05-09 70 views
0

我使用Spring @Cacheable註解Hazelcast 2.1和 Spring 3.1。從Hazelcast中的Map中返回一個克隆的對象

@Cacheable("testCache") 
public MyObject testMethod(int testParam); 

//After method call 
MyObject test = Hazelcast.getMap("testCache").get("key") 
test.setSomeProp() //This line causes an update to the cache since it is reference. 

是否有可能從地圖,而不是參考從Hazelcast.getMap()返回緩存值的克隆/複製?

即我想要一個像EhCache中的copyOnRead功能。請參閱EhCache Documentation

回答

2

如果您不使用靠近緩存並禁用緩存值。例如:

<hz:map name="map" 
      backup-count="1" 
      max-size="0" 
      read-backup-data="true" 
      cache-value="false"/> 

然後Hazelcast將永遠返回您實際值的副本,無論如何。

如果您保持cache-value = true,則Hazelcast將緩存該值的對象版本,並將在本地讀取中返回相同的副本。通過本地讀取,我的意思是讀取的成員被啓動並且密鑰的所有者是相同的。

+0

Thanks @Fuad。這就是我確實需要的。我注意到,在你的答案後文檔中有一部分關於「緩存值」,但它在另一章(Common Gotchas)中。在相關的章節中看到這種配置的東西真是太好了,以至於它們可以更容易找到 – emrahkocaman