一、使用 springboot + ehcache本地堆缓存实现相应功能

  1、引入ehcache的jar包

 

 2、创建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"> <!-- diskStore:ehcache其实是支持内存+磁盘+堆外内存,几个层级的缓存 -->
<!-- 在这里设置一下,但是一般不用的 -->
<diskStore path="java.io.tmpdir/Tmp_EhCache" /> <!-- defaultCache,是默认的缓存策略 -->
<!-- 如果你指定的缓存策略没有找到,那么就用这个默认的缓存策略 -->
<!-- external:如果设置为true的话,那么timeout就没有效果,缓存就会一直存在,一般默认就是false -->
<!-- maxElementsInMemory:内存中可以缓存多少个缓存条目,在实践中,你是需要自己去计算的,比如你计算你要缓存的对象是什么?有多大?最多可以缓存多少MB,或者多少个G的数据?除以每个对象的大小,计算出最多可以放多少个对象 -->
<!-- overflowToDisk:如果内存不够的时候,是否溢出到磁盘 -->
<!-- diskPersistent:是否启用磁盘持久化的机制,在jvm崩溃的时候和重启之间,不用 -->
<!-- timeToIdleSeconds:对象最大的闲置的时间,如果超出闲置的时间,可能就会过期,我们这里就不用了,缓存最多闲置5分钟就被干掉了 -->
<!-- timeToLiveSeconds:对象最多存活的时间,我们这里也不用,超过这个时间,缓存就过期,就没了 -->
<!-- memoryStoreEvictionPolicy:当缓存数量达到了最大的指定条目数的时候,需要采用一定的算法,从缓存中清除一批数据,LRU,最近最少使用算法,最近一段时间内,最少使用的那些数据,就被干掉了 -->
<defaultCache
eternal="false"
maxElementsInMemory="1000"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="300"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LRU" /> <!-- 手动指定的缓存策略 -->
<!-- 比如你一个应用吧,可能要缓存很多种不同的数据,比如说商品信息,或者是其他的一些数据 -->
<!-- 对不同的数据,缓存策略可以在这里配置多种 -->
<cache
name="local"
eternal="false"
maxElementsInMemory="1000"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="300"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LRU" /> <!-- ehcache这种东西,简单实用,是很快速的,1小时上手可以用在项目里了,没什么难度的 -->
<!-- ehcache这个技术,如果讲深了,里面的东西还是很多的,高级的feature,但是我们这里就不涉及了 --> </ehcache>

3、创建service类和service实现类

  service实现类

4、缓存配置管理类

package com.roncoo.eshop.cache.configuration;

import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource; /**
* 缓存配置管理类
* @author Administrator
*
*/
@Configuration
@EnableCaching
public class CacheConfiguration { @Bean
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
ehCacheManagerFactoryBean.setShared(true);
return ehCacheManagerFactoryBean;
} @Bean
public EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean ehCacheManagerFactoryBean) {
return new EhCacheCacheManager(ehCacheManagerFactoryBean.getObject());
} }

5、缓存controller进行验证

6、实验结果

注:EHCache是来自sourceforge(http://ehcache.sourceforge.net/) 的开源项目,也是纯Java实现的简单、快速的Cache组件。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分 布式的Cache,可以作为Hibernate的缓存插件。同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用 Gzip压缩提高响应速度。

最新文章

  1. 为WAMP中的mysql设置密码(默认为空)
  2. hoj 1014 Niven Numbers
  3. 【图像算法】图像特征:GLCM灰度共生矩阵,纹理特征
  4. ORACLE 数据库用户备份及表备份
  5. linux下安装多个mysql实例(摘自国外:How to create multiple mysql instance in CentOS 6.4 and Red Hat 6.4)
  6. Java基础知识强化19:Java中switch分支语句
  7. CSS Transform让百分比宽高布局元素水平垂直居中
  8. ios7以上自定义导航栏标题的字体大小及颜色的方法
  9. fileupload实现控制大小进行图片上传
  10. contentType设置类型导致ajax post data 获取不到数据
  11. 安装msdn出现的问题及解决
  12. 无法远程连接服务器上的mysql
  13. java 之 工厂模式(大话设计模式)
  14. cmd命令行模式开启或关闭 windows功能 (转载)
  15. django 文件下载
  16. UESTC 1034 AC Milan VS Juventus 分情况讨论
  17. jupyter notebook的路径
  18. 简单实现&quot;Tomcat&quot;
  19. REP report开发技巧
  20. Java 如何重写对象的 equals 方法和 hashCode 方法

热门文章

  1. 缺少对公共可见类型或成员的XML注释
  2. .gitkeep文件
  3. Layui的分页模块在网站中的应用
  4. Java桌面应用程序打包
  5. HTML5(三)SVG vs. Canvas
  6. 总结《深入理解JVM》 G1 篇
  7. 状压DP之中国象棋
  8. 14.刚体组件Rigidbody
  9. HotSpot的类模型(4)
  10. requests接口自动化7-Multi/form-data文件上传形式的post请求:files