1. 程式人生 > 其它 >springboot ehcache 配置使用方法

springboot ehcache 配置使用方法

  1. pom 引入依賴

    <!-- Ehcache -->

    <dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    </dependency>
    2.resources 目錄下直接放個檔案 ehcache.xml

<ehcache xmlns:xsi="

     xsi:noNamespaceSchemaLocation="
     updateCheck="false">
<diskStore path="java.io.tmpdir"/>

<!--defaultCache:echcache的預設快取策略 -->

<defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        maxElementsOnDisk="10000000"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
    <persistence strategy="localTempSwap"/>
</defaultCache>
    
<!-- 選單快取策略 -->
<cache name="menucache"
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        maxElementsOnDisk="10000000"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
    <persistence strategy="localTempSwap"/>
</cache>

</ehcache>
3.在Service層 方法上加上註解

@CacheEvict(value="menucache", allEntries=true) ,更新頁遊快取

@Cacheable(key="'menu-'+#parentId",value="menucache") 讀取快取, "'menu-'+#parentId" 萬用字元,也可以直接寫死字串

menucache 對應 上面 xml name="menucache"

/**刪除選單

  • @param MENU_ID
  • @fhadmin.org
    */

@CacheEvict(value="menucwww.pizei.comache", allEntries=true)
public void deleteMenuById(String MENU_ID) throws Exception{
this.cleanRedis();
menuMapper.deleteMenuById(MENU_ID);
}
/**

  • 通過ID獲取其子一級選單
  • @param parentId
  • @return
  • @fhadmin.org
    */

@Cacheable(key="'menu-'+#parentId",value="menucache")
public List<Menu> listSubMenuByParentId(String parentId) throws Exception {
return menuMapper.listSubMenuByParentId(parentId);
}