1、pom文件引入

<!-- https://mvnrepository.com/artifact/org.ehcache/ehcache -->
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.7.0</version>
</dependency>

2、磁盘存储

@Bean("cacheManager")
public CacheManager cacheManager() {
//缓存大小设置:磁盘
ResourcePoolsBuilder cacheSize = ResourcePoolsBuilder.newResourcePoolsBuilder().disk(1, MemoryUnit.GB);
//缓存类型设置
CacheConfigurationBuilder<String, String> cacheConfigurationBuilder = CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, String.class, cacheSize);
//创建缓存管理器
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.with(CacheManagerBuilder.persistence(new File(getStoragePath(), "askbob")))//设置存储位置
.withCache("askbob", cacheConfigurationBuilder).build(true);//初始化,或cacheManager.init();
return cacheManager;
}
//设置磁盘路径
private String getStoragePath() {
ApplicationHome applicationHome = new ApplicationHome(getClass());
File file = applicationHome.getDir();
return file.toString();
}

3、堆存储

@Bean("cacheManager")
public CacheManager cacheManager() {
//缓存大小设置:堆
ResourcePoolsBuilder cacheSize = ResourcePoolsBuilder.newResourcePoolsBuilder().heap(1, EntryUnit.ENTRIES).offheap(1, MemoryUnit.GB);
//缓存类型设置
CacheConfigurationBuilder<String, String> cacheConfigurationBuilder = CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, String.class, cacheSize);
//创建缓存管理器
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("askbob", cacheConfigurationBuilder).build(true);//初始化或cacheManager.init();
return cacheManager;
}

@Bean("ehcache")
public Cache<String, String> createCache() {
CacheManager cacheManager = cacheManager();
Cache<String, String> cache = cacheManager.getCache("askbob", String.class, String.class);
return cache;
}

4、缓存设置

@Bean("cacheManager")
public CacheManager cacheManager() {
//缓存大小设置:堆
ResourcePoolsBuilder cacheSize = ResourcePoolsBuilder.newResourcePoolsBuilder().heap(1, EntryUnit.ENTRIES).offheap(1, MemoryUnit.GB);
//缓存类型设置
CacheConfigurationBuilder<String, String> cacheConfigurationBuilder = CacheConfigurationBuilder
.newCacheConfigurationBuilder(String.class, String.class, cacheSize)
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofHours(24)));//缓存超时设置
//创建缓存管理器
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("askbob", cacheConfigurationBuilder).build(true);//初始化或cacheManager.init();
return cacheManager;
}

5、测试类

@RunWith(SpringRunner.class)
@SpringBootTest(classes = AskBobApplication.class)
public class EhcacheTest {

@Autowired
Cache<String, String> ehcache;

@Test
public void ehcachTest() {
ehcache.put("ehcach", "hello ehcach 2019");
String cache = ehcache.get("ehcach");
System.out.println(cache);
Assert.assertNotNull(cache);
}
}

SpringCloud+Ehcache的更多相关文章

  1. 基于idea的springcloud的helloworld项目搭建过程整理

    Springcloud的搭建主要包括三个部分:服务注册中心.服务提供者.服务消费者.每一个部分都是一个springboot项目,它们通过配置文件(application.properties或appl ...

  2. SpringCloud统一配置笔记

    Server端: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  3. SpringCloud使用jpa之传统方式

    不说废话,直接上代码: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  4. SpringCloud+Redis

    redis①是一种nosql数据库,以键值对<key,value>的形式存储数据,其速度相比于MySQL之类的数据库,相当于内存读写与硬盘读写的差别,所以常常用作缓存,用于少写多读的场景下 ...

  5. SpringCloud+MyBatis+Redis整合—— 超详细实例(二)

    2.SpringCloud+MyBatis+Redis redis①是一种nosql数据库,以键值对<key,value>的形式存储数据,其速度相比于MySQL之类的数据库,相当于内存读写 ...

  6. springcloud 微服务分布式 框架源码 activiti工作流 前后分离

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

  7. springcloud vue.js 微服务分布式 前后分离 集成代码生成器 shiro权限 activiti工作流

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

  8. Springcloud 中 SpringBoot 配置全集 (收藏版)

    Springcloud 中 SpringBoot 配置全集 (收藏版) 疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 前言 疯狂创客圈(笔者尼恩创建的高并发研习社群 ...

  9. springcloud Springboot vue.js Activiti6 前后分离 跨域 工作流 集成代码生成器 shiro权限

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

随机推荐

  1. 接口(API)测试理念

    什么是接口测试 接口测试就是针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口描述文档的一致性: 测试的重点是检查数据交互.传递.和控制管理过程以及系统间的相互 ...

  2. 新能力 | 云开发CMS内容管理系统,5分钟搞定小程序管理后台

    小程序·云开发的云调用能力,让用户可以免鉴权快速调用微信的开放能力,极大节约了开发成本.现在,大家期待已久的云开发 CMS 内容管理系统,终于上线啦!顺便提示,接下来还可以二次开发哦! 云开发 CMS ...

  3. 推荐一款Python神器,5 行 Python 代码 实现一键批量扣图

    今天给大家分享一款Python装逼实用神器. 在日常生活或者工作中,经常会遇到想将某张照片中的人物抠出来,然后拼接到其他图片上去.专业点的人可以使用 PhotoShop 的"魔棒" ...

  4. git的日常使用

    首次上传项目到github上 在项目上右击——>选择  Git Bash Here  直接进入到存放项目文件的地址 git init     在当前项目的目录中生成本地的git管理 git ad ...

  5. Angular和Ionic的路由跳转

    一.Angular和Ionic的路由跳转 Angular的路由跳转: constructor(private router:Router){    } .... this.router.navigat ...

  6. APIView中的dispatch

    (1)dispatch方法详解----封装原有的request对象 (原request中的方法和属性均可直接在封装后的request中调用,或者使用request._request也可,如:reque ...

  7. Hbase javaAPI报错:Callexception,tries=10,retries=35,started=38465msago

    [client.RpcRetryingCaller(142)]Callexception,tries=10,retries=35,started=38465msago,cancelled=false, ...

  8. Java集合--阻塞队列及各种实现的解析

    阻塞队列(Blocking Queue) 一.队列的定义 说的阻塞队列,就先了解下什么是队列,队列也是一种特殊的线性表结构,在线性表的基础上加了一条限制:那就是一端入队列,一端出队列,且需要遵循FIF ...

  9. C:习题2

    C 语言中的数据类型主要有哪些? C 语言为什么要规定对所有用到的变量“先定义后使用”?这样做有什么好处? 1. 编译系统会根据定义为变量分配内存空间,分配空间的大小与数据类型有关 2. 系统可以根据 ...

  10. Map,HashMap五种遍历方法

    假设有数组            HashMap<Integer, String> h=new HashMap<Integer,String>();        h.put( ...