Springboot使用ehcache缓存
本文部分步骤继承于springboot使用cache缓存,如果有不清楚的,请移驾springboot使用cache缓存
ehcache
是一种广泛使用的开源Java
分布式缓存。主要面向通用缓存,Java EE
和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip
缓存servlet
过滤器,支持REST
和SOAP api
等特点。
1、依赖导入
整合ehcache
必须要导入它的依赖。
- <dependency>
- <groupId>net.sf.ehcache</groupId>
- <artifactId>ehcache</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-cache</artifactId>
- </dependency>
2、yml文件
需要说明的是config:classpath:/ehcache.xml
可以不用写,因为默认就是这个路径。但ehcache.xml
必须有。
- spring:
- cache:
- type: ehcache
- ehcache:
- config: classpath:/config/ehcache.xml
3、ehcache.xml
在resources
目录下新建config
文件夹,在文件夹中建立ehcache.xml
文件。
- <ehcache>
- <!--
- 磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存
- path:指定在硬盘上存储对象的路径
- path可以配置的目录有:
- user.home(用户的家目录)
- user.dir(用户当前的工作目录)
- java.io.tmpdir(默认的临时目录)
- ehcache.disk.store.dir(ehcache的配置目录)
- 绝对路径(如:d:\\ehcache)
- 查看路径方法:String tmpDir = System.getProperty("java.io.tmpdir");
- -->
- <diskStore path="java.io.tmpdir" />
- <!--
- defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理
- maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象
- eternal:代表对象是否永不过期 (指定true则下面两项配置需为0无限期)
- timeToIdleSeconds:最大的发呆时间 /秒
- timeToLiveSeconds:最大的存活时间 /秒
- overflowToDisk:是否允许对象被写入到磁盘
- 说明:下列配置自缓存建立起600秒(10分钟)有效 。
- 在有效的600秒(10分钟)内,如果连续120秒(2分钟)未访问缓存,则缓存失效。
- 就算有访问,也只会存活600秒。
- -->
- <defaultCache maxElementsInMemory="10000" eternal="false"
- timeToIdleSeconds="600" timeToLiveSeconds="600" overflowToDisk="true" />
- <cache name="myCache" maxElementsInMemory="10000" eternal="false"
- timeToIdleSeconds="120" timeToLiveSeconds="600" overflowToDisk="true" />
- </ehcache>
4、使用缓存
@CacheConfig(cacheNames={“myCache”})
设置ehcache
的名称,这个名称必须在ehcache.xml
已配置。
- import com.example.ehcache.dao.PersonRepository;
- import com.example.ehcache.entity.Person;
- import com.example.ehcache.service.DemoService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.cache.annotation.CacheConfig;
- import org.springframework.cache.annotation.CacheEvict;
- import org.springframework.cache.annotation.CachePut;
- import org.springframework.cache.annotation.Cacheable;
- import org.springframework.stereotype.Service;
- /**
- * @author 李振
- * @date 2018/12/27
- *
- */
- @Service
- @CacheConfig(cacheNames = {"myCache"})
- public class DemoServiceImpl implements DemoService {
- @Autowired
- private PersonRepository personRepository;
- /**
- * 注意:如果没有指定key,则方法参数作为key保存到缓存中
- */
- /**
- * @param person
- * @return
- * @CachePut缓存新增的或更新的数据到缓存,其中缓存的名称为people,数据的key是person的id
- */
- @CachePut(key = "#person.id")
- @Override
- public Person save(Person person) {
- Person p = personRepository.save(person);
- System.out.println("为id,key为:" + p.getId() + "数据做了缓存");
- return p;
- }
- /**
- * @param id
- * @CacheEvict从缓存people中删除key为id的数据
- */
- @CacheEvict
- @Override
- public void remove(Integer id) {
- System.out.println("删除了id,key为" + id + "的数据缓存");
- personRepository.delete(id);
- }
- /**
- * @param person
- * @return
- * @Cacheable缓存key为person的id数据到缓存people中
- */
- @Cacheable(key = "#person.id")
- @Override
- public Person findOne(Person person) {
- Person p = personRepository.findOne(person.getId());
- System.out.println("为id,key为:" + p.getId() + "数据做了缓存");
- return p;
- }
- }
以上
原文出处:
吟风者,springboot使用ehcache缓存, https://www.jianshu.com/p/9e4eb5e5bc1b
Springboot使用ehcache缓存的更多相关文章
- 转载-Springboot整合ehcache缓存
转载:https://www.cnblogs.com/xzmiyx/p/9897623.html EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统 ...
- springboot 整合ehcache缓存
1.CacheManager Spring Boot默认集成CacheManager,如下包所示: 可以看出springboot自动配置了 JcacheCacheConfiguration. EhCa ...
- Springboot整合Ehcache缓存
Pom.xml导包 <!-- ehcache --> <dependency> <groupId>org.springframework.boot</grou ...
- springboot整合ehcache缓存失效
最近做了个微信公众号后台,因为只是单应用就选用了ehcache来做本地缓存,主要是用于缓存微信的accece_token和jsapi_ticket.在使用ehcache的时候遇到了@Cacheable ...
- 【spring-boot】spring-boot 整合 ehcache 实现缓存机制
方式一:老 不推荐 参考:https://www.cnblogs.com/lic309/p/4072848.html /*************************第一种 引入 ehcach ...
- SpringBoot学习笔记(10)-----SpringBoot中使用Redis/Mongodb和缓存Ehcache缓存和redis缓存
1. 使用Redis 在使用redis之前,首先要保证安装或有redis的服务器,接下就是引入redis依赖. pom.xml文件如下 <dependency> <groupId&g ...
- SpringBoot中Shiro缓存使用Redis、Ehcache
在SpringBoot中Shiro缓存使用Redis.Ehcache实现的两种方式实例 SpringBoot 中配置redis作为session 缓存器. 让shiro引用 本文是建立在你是使用这sh ...
- Springboot整合Ehcache 解决Mybatis二级缓存数据脏读 -详细
前面有写了一篇关于这个,但是这几天又改进了一点,就单独一篇在详细说明一下 配置 application.properties ,启用Ehcache # Ehcache缓存 spring.cache.t ...
- spring boot 学习(十四)SpringBoot+Redis+SpringSession缓存之实战
SpringBoot + Redis +SpringSession 缓存之实战 前言 前几天,从师兄那儿了解到EhCache是进程内的缓存框架,虽然它已经提供了集群环境下的缓存同步策略,这种同步仍然需 ...
随机推荐
- Java连载43-访问静态方法其他注意事项、static关键字
一.其他注意点 1.对于带有static的方法,我们讲过需要用“类名.”的方式进行访问,但是其实我们使用“引用.”的方式也是可以进行访问这个方法的举例. package com.bjpowernode ...
- spring cloud 2.x版本 Hystrix Dashboard断路器教程
前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...
- CF 704 D. Captain America
CF 704 D. Captain America 题目链接 题目大意:给出\(n\)个点的坐标,你要将每个点染成红色或者蓝色.染一个红色要付出\(r\)的代价,染一个蓝色要付出\(b\)的代价.有\ ...
- 前端笔记之React(一)初识React&组件&JSX语法
一.React项目起步配置 官网:https://reactjs.org/ 文档:https://reactjs.org/docs/hello-world.html 中文:http://react.c ...
- 死磕 java同步系列之CountDownLatch源码解析
- C# - VS2019页面布局容器splitContainer和groupBox小结
前言 在WinFrm应用程序中,产品的外观.布局将直接影响用户第一体验,所以对于开发者来说,在没有美工支持的前提下,应当注意系统页面的布局,本章主要讲解splitContainer和groupBox的 ...
- git遇到的错误和解决方法(长期更新)
1:场景:将两个git合并成一个git url,由于项目超过100M,所以出现错误,以下是解决方案:
- Android SearchView不显示搜索icon
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/80 背景: 之前碰到了一个页面展示问题,SearchVie ...
- Linux中vim编辑命令
vim 功能 : 一个强大的文本编辑器 语法格式 :vim [ 选项 ] / 路径 / 文本文件名 命令格式: vi [ 选项 ] [ 文件名 ] +num 打开某个文件直接跳转到 num 行 ...
- PHP将字符串转数组
explode(',',$arr_string) //将字符串转数组 $arr_string = '1,2,3'; $arr = explode(',',$arr_string); dump($arr ...