最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot手動(dòng)使用EhCache的方法示例

 更新時(shí)間:2018年02月12日 10:41:25   作者:深藍(lán)蝴蝶  
本篇文章主要介紹了SpringBoot手動(dòng)使用EhCache的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

SpringBoot在annotation的層面實(shí)現(xiàn)了數(shù)據(jù)緩存的功能,基于Spring的AOP技術(shù)。所有的緩存配置只是在annotation層面配置,像聲明式事務(wù)一樣。

Spring定義了CacheManager和Cache接口統(tǒng)一不同的緩存技術(shù)。其中CacheManager是Spring提供的各種緩存技術(shù)的抽象接口。而Cache接口包含緩存的各種操作。

CacheManger

針對(duì)不同的緩存技術(shù),需要實(shí)現(xiàn)不同的cacheManager,Spring定義了如下的cacheManger實(shí)現(xiàn)。

CacheManger 描述
SimpleCacheManager 使用簡(jiǎn)單的Collection來(lái)存儲(chǔ)緩存,主要用于測(cè)試
ConcurrentMapCacheManager 使用ConcurrentMap作為緩存技術(shù)(默認(rèn))
NoOpCacheManager 測(cè)試用
EhCacheCacheManager 使用EhCache作為緩存技術(shù),以前在hibernate的時(shí)候經(jīng)常用
GuavaCacheManager 使用google guava的GuavaCache作為緩存技術(shù)
HazelcastCacheManager 使用Hazelcast作為緩存技術(shù)
JCacheCacheManager 使用JCache標(biāo)準(zhǔn)的實(shí)現(xiàn)作為緩存技術(shù),如Apache Commons JCS
RedisCacheManager 使用Redis作為緩存技術(shù)

常規(guī)的SpringBoot已經(jīng)為我們自動(dòng)配置了EhCache、Collection、Guava、ConcurrentMap等緩存,默認(rèn)使用ConcurrentMapCacheManager。SpringBoot的application.properties配置文件,使用spring.cache前綴的屬性進(jìn)行配置。

application配置

spring.cache.type=#緩存的技術(shù)類型
spring.cache.cache-names=應(yīng)用程序啟動(dòng)創(chuàng)建緩存的名稱
spring.cache.ehcache.config=ehcache的配置文件位置
spring.cache.infinispan.config=infinispan的配置文件位置
spring.cache.jcache.config=jcache配置文件位置
spring.cache.jcache.provider=當(dāng)多個(gè)jcache實(shí)現(xiàn)類時(shí),指定選擇jcache的實(shí)現(xiàn)類

入口類配置

加入注解 @EnableCaching

緩存注解

注解 描述
@Cacheable 在調(diào)用方法之前,首先應(yīng)該在緩存中查找方法的返回值,如果這個(gè)值能夠找到,就會(huì)返回緩存的值。否則,這個(gè)方法就會(huì)被調(diào)用,返回值會(huì)放到緩存之中。
@CachePut 將方法的返回值放到緩存中。在方法的調(diào)用前并不會(huì)檢查緩存,方法始終都會(huì)被調(diào)用。
@CacheEvict 在緩存中清除一個(gè)或多個(gè)條目。
@Caching 分組的注解,能夠同時(shí)應(yīng)用多個(gè)其他的緩存注解。

手動(dòng)使用EhCache

在實(shí)際開(kāi)發(fā)過(guò)程中,存在不使用注解,需要自己添加緩存的情況。下面就以Ehcache為例,簡(jiǎn)單寫一下配置過(guò)程。

1. 添加依賴

引入springboot-cache和ehcache。需要注意,EhCache不需要配置version,SpringBoot的根pom已經(jīng)集成了。

  <!-- 緩存 -->
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-cache</artifactId>
  </dependency>
  <!-- ehcache -->
  <dependency>
   <groupId>net.sf.ehcache</groupId>
   <artifactId>ehcache</artifactId>
  </dependency>

2. 入口類配置

加入注解 @EnableCaching

@SpringBootApplication
@EnableCaching
public class DemoApplication {
}

3. EhCache配置

在src\main\resources目錄下,添加ehcache.xml文件,內(nèi)容見(jiàn)文末。

4. application.application配置

# 配置ehcache緩存
spring.cache.type=ehcache
# 指定ehcache配置文件路徑
spring.cache.ehcache.config=classpath:/ehcache.xml

5. 使用Cache

注入SpringBoot自動(dòng)配置的bean,org.springframework.cache.CacheManager。

一個(gè)簡(jiǎn)單的測(cè)試類:

package com.bbf.frame.test;

import com.bbf.frame.Application;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import javax.annotation.Resource;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK)
public class TestCache {
 @Resource
 private CacheManager cacheManager;

 @Test
 public void cacheTest() {
  // 顯示所有的Cache空間
  System.out.println(StringUtils.join(cacheManager.getCacheNames(), ","));
  Cache cache = cacheManager.getCache("userCache");
  cache.put("key", "123");
  System.out.println("緩存成功");
  String res = cache.get("key", String.class);
  System.out.println(res);
 }
}

附錄 EhCache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation = "http://ehcache.org/ehcache.xsd"
     updateCheck = "false">

 <!-- 指定一個(gè)文件目錄,當(dāng)EHCache把數(shù)據(jù)寫到硬盤上時(shí),將把數(shù)據(jù)寫到這個(gè)文件目錄下 -->
 <diskStore path = "java.io.tmpdir"/>

 <!-- 默認(rèn)的管理策略 -->
 <defaultCache
   eternal = "false"
   maxElementsInMemory = "10000"
   overflowToDisk = "true"
   diskPersistent = "false"
   timeToIdleSeconds = "120"
   timeToLiveSeconds = "120"
   diskExpiryThreadIntervalSeconds = "120"
   memoryStoreEvictionPolicy = "LRU"/>

 <!-- 此緩存最多可以存活timeToLiveSeconds秒,如果期間超過(guò)timeToIdleSeconds秒未訪問(wèn),緩存失效 -->
 <cache
   name = "userCache"
   eternal = "false"
   maxElementsInMemory = "100"
   overflowToDisk = "false"
   diskPersistent = "false"
   timeToIdleSeconds = "120"
   timeToLiveSeconds = "180"
   memoryStoreEvictionPolicy = "LRU"/>

 <!-- maxElementsInMemory 內(nèi)存中最大緩存對(duì)象數(shù),看著自己的heap大小來(lái)搞 -->
 <!-- eternal:true表示對(duì)象永不過(guò)期,此時(shí)會(huì)忽略timeToIdleSeconds和timeToLiveSeconds屬性,默認(rèn)為false -->
 <!-- maxElementsOnDisk:硬盤中最大緩存對(duì)象數(shù),若是0表示無(wú)窮大 -->
 <!-- overflowToDisk:true表示當(dāng)內(nèi)存緩存的對(duì)象數(shù)目達(dá)到了maxElementsInMemory界限后,
 會(huì)把溢出的對(duì)象寫到硬盤緩存中。注意:如果緩存的對(duì)象要寫入到硬盤中的話,則該對(duì)象必須實(shí)現(xiàn)了Serializable接口才行。-->
 <!-- diskSpoolBufferSizeMB:磁盤緩存區(qū)大小,默認(rèn)為30MB。每個(gè)Cache都應(yīng)該有自己的一個(gè)緩存區(qū)。-->
 <!-- diskPersistent:是否緩存虛擬機(jī)重啟期數(shù)據(jù) -->
 <!-- diskExpiryThreadIntervalSeconds:磁盤失效線程運(yùn)行時(shí)間間隔,默認(rèn)為120秒 -->

 <!-- timeToIdleSeconds: 設(shè)定允許對(duì)象處于空閑狀態(tài)的最長(zhǎng)時(shí)間,以秒為單位。當(dāng)對(duì)象自從最近一次被訪問(wèn)后,
 如果處于空閑狀態(tài)的時(shí)間超過(guò)了timeToIdleSeconds屬性值,這個(gè)對(duì)象就會(huì)過(guò)期,
 EHCache將把它從緩存中清空。只有當(dāng)eternal屬性為false,該屬性才有效。如果該屬性值為0,
 則表示對(duì)象可以無(wú)限期地處于空閑狀態(tài) -->

 <!-- timeToLiveSeconds:設(shè)定對(duì)象允許存在于緩存中的最長(zhǎng)時(shí)間,以秒為單位。當(dāng)對(duì)象自從被存放到緩存中后,
 如果處于緩存中的時(shí)間超過(guò)了 timeToLiveSeconds屬性值,這個(gè)對(duì)象就會(huì)過(guò)期,
 EHCache將把它從緩存中清除。只有當(dāng)eternal屬性為false,該屬性才有效。如果該屬性值為0,
 則表示對(duì)象可以無(wú)限期地存在于緩存中。timeToLiveSeconds必須大于timeToIdleSeconds屬性,才有意義 -->

 <!-- memoryStoreEvictionPolicy:當(dāng)達(dá)到maxElementsInMemory限制時(shí),
 Ehcache將會(huì)根據(jù)指定的策略去清理內(nèi)存??蛇x策略有:LRU(最近最少使用,默認(rèn)策略)、
 FIFO(先進(jìn)先出)、LFU(最少訪問(wèn)次數(shù))。-->

</ehcache>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中實(shí)現(xiàn)異步調(diào)用@Async詳解

    SpringBoot中實(shí)現(xiàn)異步調(diào)用@Async詳解

    這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)異步調(diào)用@Async詳解,在SpringBoot的日常開(kāi)發(fā)中,一般都是同步調(diào)用的,但實(shí)際中有很多場(chǎng)景非常適合使用異步來(lái)處理,需要的朋友可以參考下
    2024-01-01
  • Java獲取漢字拼音的全拼和首拼實(shí)現(xiàn)代碼分享

    Java獲取漢字拼音的全拼和首拼實(shí)現(xiàn)代碼分享

    這篇文章主要介紹了Java獲取漢字拼音的全拼和首拼實(shí)現(xiàn)代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-06-06
  • java web在高并發(fā)和分布式下實(shí)現(xiàn)訂單號(hào)生成唯一的解決方案

    java web在高并發(fā)和分布式下實(shí)現(xiàn)訂單號(hào)生成唯一的解決方案

    這篇文章主要介紹了java web在高并發(fā)和分布式下實(shí)現(xiàn)訂單號(hào)生成唯一的解決方案,需要的朋友可以參考下
    2017-11-11
  • Java枚舉的七種常見(jiàn)用法總結(jié)(必看)

    Java枚舉的七種常見(jiàn)用法總結(jié)(必看)

    下面小編就為大家?guī)?lái)一篇Java枚舉的七種常見(jiàn)用法總結(jié)(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • java CompletableFuture實(shí)現(xiàn)異步編排詳解

    java CompletableFuture實(shí)現(xiàn)異步編排詳解

    這篇文章主要為大家介紹了java CompletableFuture實(shí)現(xiàn)異步編排詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • SpringMVC處理器映射器HandlerMapping詳解

    SpringMVC處理器映射器HandlerMapping詳解

    這篇文章主要介紹了SpringMVC處理器映射器HandlerMapping詳解,在SpringMVC中會(huì)有很多請(qǐng)求,每個(gè)請(qǐng)求都需要一個(gè)HandlerAdapter處理,具體接收到一個(gè)請(qǐng)求之后使用哪個(gè)HandlerAdapter進(jìn)行處理呢,他們的過(guò)程是什么,需要的朋友可以參考下
    2023-09-09
  • JavaWeb組件Servlet使用實(shí)例解析

    JavaWeb組件Servlet使用實(shí)例解析

    這篇文章主要介紹了JavaWeb組件Servlet使用實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java開(kāi)發(fā)環(huán)境配置及Vscode搭建過(guò)程

    Java開(kāi)發(fā)環(huán)境配置及Vscode搭建過(guò)程

    今天通過(guò)圖文并茂的形式給大家介紹Java開(kāi)發(fā)環(huán)境配置及Vscode搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • 淺談java面向?qū)ο?類,封裝,this,構(gòu)造方法)

    淺談java面向?qū)ο?類,封裝,this,構(gòu)造方法)

    下面小編就為大家?guī)?lái)一篇淺談java面向?qū)ο?類,封裝,this,構(gòu)造方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 基于SpringBoot解析和生成CSV文件

    基于SpringBoot解析和生成CSV文件

    Apache?Commons?CSV是Apache?Commons項(xiàng)目中的一個(gè)子項(xiàng)目,專門用于處理CSV(Comma-Separated?Values,逗號(hào)分隔值)文件的Java庫(kù),CSV是一種常見(jiàn)的數(shù)據(jù)交換格式,本文給大家介紹了基于SpringBoot解析和生成CSV文件,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

社旗县| 砚山县| 安岳县| 宝兴县| 礼泉县| 东乡族自治县| 客服| 香河县| 科技| 哈巴河县| 温州市| 偏关县| 辽阳市| 华池县| 洛浦县| 毕节市| 浦江县| 涿鹿县| 徐闻县| 海宁市| 渭源县| 灵璧县| 贵阳市| 年辖:市辖区| 元阳县| 铁岭县| 陇川县| 清徐县| 昭通市| 天台县| 个旧市| 奉化市| 淮阳县| 鲁甸县| 禄劝| 松潘县| 甘谷县| 红桥区| 汤原县| 商丘市| 会东县|