Spring Ehcache刷新

时间:2017-02-08 06:39:58

标签: spring spring-mvc caching ehcache

我从缓存中读取数据。我正在使用ehcache。我需要在每次插入操作后刷新缓存数据。我怎么能用注释做到这一点?或任何其他方式?

ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true"
monitoring="autodetect"
dynamicConfig="true">

 <diskStore path="java.io.tmpdir" />

 <defaultCache
    maxElementsInMemory="10000" 
    eternal="true"
    timeToIdleSeconds="120" 
    timeToLiveSeconds="120" 
    overflowToDisk="true"
    maxElementsOnDisk="10000000" 
    diskPersistent="true"
    diskExpiryThreadIntervalSeconds="120" 
    memoryStoreEvictionPolicy="LRU" />

<cache name="allNodesCache"
    maxEntriesLocalHeap="10000"
    maxEntriesLocalDisk="1000"
    eternal="false"
    diskSpoolBufferSizeMB="20"
    timeToIdleSeconds="300" timeToLiveSeconds="600"
    memoryStoreEvictionPolicy="LFU"
    transactionalMode="off">
    <persistence strategy="localTempSwap" />
</cache>

<cache name="nodesMAPCache"
    maxElementsInMemory="10000" 
    eternal="true"
    timeToIdleSeconds="120" 
    timeToLiveSeconds="120" 
    overflowToDisk="true"
    maxElementsOnDisk="10000000" 
    diskPersistent="true"
    diskExpiryThreadIntervalSeconds="120" 
    memoryStoreEvictionPolicy="LRU" />

<cache name="nodesCache"
    maxElementsInMemory="10000" 
    eternal="true"
    timeToIdleSeconds="120" 
    timeToLiveSeconds="120" 
    overflowToDisk="true"
    maxElementsOnDisk="10000000" 
    diskPersistent="true"
    diskExpiryThreadIntervalSeconds="120" 
    memoryStoreEvictionPolicy="LRU" />

存储库类:

Repository

public interface NodeRepository扩展了JpaRepository {

@Cacheable(value = "nodesCache")
@Query("select new com.datum.fnd.domain.Node(c.idNode, c.name, c.address, c.description, c.point) from Node c")
List<Node> selectAll();

1 个答案:

答案 0 :(得分:0)

我用以下代码解决了我的问题:

@CacheEvict(cacheNames = { "nodesCache", "nodesMAPCache" }, allEntries = true)
@Override
public Node create(Node node) {
    node.setName(nodeRepository.generateNodeName(node.getRegion().getIdRegion()));
    return nodeRepository.save(node);
}
相关问题