Spring Boot如何使用EhCache演示

一、EhCache使用演示

EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点,Hibernate中的默认Cache就是使用的EhCache。

本章节示例是在Spring Boot集成Spring Cache的源码基础上进行改造。源码地址:https://github.com/imyanger/springboot-project/tree/master/p20-springboot-cache

使用EhCache作为缓存,我们先引入相关依赖。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--ehcache依赖-->
<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

然后创建EhCache的配置文件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">

  <!--
    磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于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="cache" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120"
      timeToLiveSeconds="600" overflowToDisk="true" />

</ehcache>

然后SpringBoot配置文件中,指明缓存类型并声明Ehcache配置文件的位置。

server:
 port: 10900

spring:
 profiles:
  active: dev
 cache:
  type: ehcache
  ehcache:
   config: classpath:/ehcache.xml

这样就可以开始使用Ehcache了,测试代码与Spring Boot集成Spring Cache一致。

SpringBoot启动类,@EnableCaching开启Spring Cache缓存功能。

@EnableCaching
@SpringBootApplication
public class SpringbootApplication {

  public static void main(String[] args) {
    String tmpDir = System.getProperty("java.io.tmpdir");
    System.out.println("临时路径:" + tmpDir);
    SpringApplication.run(SpringbootApplication.class, args);
  }
}

CacheApi接口调用类,方便调用进行测试。

@RestController
@RequestMapping("cache")
public class CacheApi {

  @Autowired
  private CacheService cacheService;

  @GetMapping("get")
  public User get(@RequestParam int id){
    return cacheService.get(id);
  }

  @PostMapping("set")
  public User set(@RequestParam int id, @RequestParam String code, @RequestParam String name){
    User u = new User(code, name);
    return cacheService.set(id, u);
  }

  @DeleteMapping("del")
  public void del(@RequestParam int id){
    cacheService.del(id);
  }
}

CacheService缓存业务处理类,添加缓存,更新缓存和删除。

@Slf4j
@Service
public class CacheService {

  private Map<Integer, User> dataMap = new HashMap <Integer, User>(){
    {
      for (int i = 1; i < 100 ; i++) {
        User u = new User("code" + i, "name" + i);
        put(i, u);
      }
    }
   };

  // 获取数据
  @Cacheable(value = "cache", key = "'user:' + #id")
  public User get(int id){
    log.info("通过id{}查询获取", id);
    return dataMap.get(id);
  }

  // 更新数据
  @CachePut(value = "cache", key = "'user:' + #id")
  public User set(int id, User u){
    log.info("更新id{}数据", id);
    dataMap.put(id, u);
    return u;
   }
  //删除数据
  @CacheEvict(value = "cache", key = "'user:' + #id")
  public void del(int id){
    log.info("删除id{}数据", id);
    dataMap.remove(id);
  }
}

源码地址:https://github.com/imyanger/springboot-project/tree/master/p22-springboot-cache-ehcache

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • springboot+EHcache 实现文章浏览量的缓存和超时更新

    问题描述 当我们需要统计文章的浏览量的时候,最常规的做法就是: 1.访问文章链接www.abc.com/article/{id} 2.在控制层获取Article实体 3.得到文章浏览量count并且count++ 4.最后update实体Article. 这么做对没有访问量的网站来说很棒,如果网站访问量很大,这么不停的读写数据库,会对服务器造成很大的压力. 解决思路 引入Ehcache,将文章的访问量存在cache中,每点击一次文章,将cache中的count加1.在有效的时间内访问文章只是将c

  • SpringBoot手动使用EhCache的方法示例

    SpringBoot在annotation的层面实现了数据缓存的功能,基于Spring的AOP技术.所有的缓存配置只是在annotation层面配置,像声明式事务一样. Spring定义了CacheManager和Cache接口统一不同的缓存技术.其中CacheManager是Spring提供的各种缓存技术的抽象接口.而Cache接口包含缓存的各种操作. CacheManger 针对不同的缓存技术,需要实现不同的cacheManager,Spring定义了如下的cacheManger实现. Ca

  • 使用ehcache三步搞定springboot缓存的方法示例

    本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能.在Spring Boot应用程序中,我们可以通过Spring Caching来快速搞定数据缓存.接下来我们将介绍如何在三步之内搞定Spring Boot缓存. 1. 创建一个Spring Boot工程并添加Maven依赖 你所创建的Spring Boot应用程序的maven依赖文件至少应该是下面的样子: <?xml version="1.0" encoding="UTF-8

  • springboot整合EHCache的实践方案

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. ehcache提供了多种缓存策略,主要分为内存和磁盘两级,所以无需担心容量问题. spring-boot是一个快速的集成框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 用户登录之后,几乎之后展示任何页面都需要显示一下用户信息.可以在用户登录成功之后将用户信息进行缓存,之后直

  • springboot整合ehcache 实现支付超时限制的方法

    下面给大家介绍springboot整合ehcache 实现支付超时限制的方法,具体内容如下所示: <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.6.11</version> </dependency> pom文件中引入ehcache依赖 在类路径下存放ehcache.

  • 详解springboot整合ehcache实现缓存机制

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. ehcache提供了多种缓存策略,主要分为内存和磁盘两级,所以无需担心容量问题. spring-boot是一个快速的集成框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 由于spring-boot无需任何样板化的配置文件,所以spring-boot集成一些其他框架时会有略微的

  • 详解Spring Boot Oauth2缓存UserDetails到Ehcache

    在Spring中有一个类CachingUserDetailsService实现了UserDetailsService接口,该类使用静态代理模式为UserDetailsService提供缓存功能.该类源码如下: CachingUserDetailsService.java public class CachingUserDetailsService implements UserDetailsService { private UserCache userCache = new NullUserC

  • Spring Boot缓存实战 EhCache示例

    Spring boot默认使用的是SimpleCacheConfiguration,即使用ConcurrentMapCacheManager来实现缓存.但是要切换到其他缓存实现也很简单 pom文件 在pom中引入相应的jar包 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web<

  • Spring Boot如何使用EhCache演示

    一.EhCache使用演示 EhCache是一个纯Java的进程内缓存框架,具有快速.精干等特点,Hibernate中的默认Cache就是使用的EhCache. 本章节示例是在Spring Boot集成Spring Cache的源码基础上进行改造.源码地址:https://github.com/imyanger/springboot-project/tree/master/p20-springboot-cache 使用EhCache作为缓存,我们先引入相关依赖. <dependency> &l

  • Spring Boot结合ECharts案例演示示例

    目录 一.提出任务 二.完成任务 (一)创建数据库与表 (二)创建Spring Boot项目 (三)创建班级实体类 (四)创建班级映射器接口 (五)创建班级映射器配置文件 (六)创建班级服务类 (七)创建班级控制器 (八)添加ECharts和jQuery脚本 (九)添加Druid起步依赖 (十)修改应用属性文件 (十一)创建页面可视化数据 (十二)启动应用,查看结果 一.提出任务 后端利用Spring Boot查询班级表数据,前端利用ECharts绘制各班人数柱形图. (一)班级数据 编号 班级

  • Spring Boot 简单使用EhCache缓存框架的方法

    我的环境是Gradle + Kotlin + Spring Boot,这里介绍EhCache缓存框架在Spring Boot上的简单应用. 在build.gradle文件添加依赖 compile("org.springframework.boot:spring-boot-starter-cache") compile("net.sf.ehcache:ehcache") 修改Application的配置,增加@EnableCaching配置 @MapperScan(&

  • 详解spring boot集成ehcache 2.x 用于hibernate二级缓存

    本文将介绍如何在spring boot中集成ehcache作为hibernate的二级缓存.各个框架版本如下 spring boot:1.4.3.RELEASE spring framework: 4.3.5.RELEASE hibernate:5.0.1.Final(spring-boot-starter-data-jpa默认依赖) ehcache:2.10.3 项目依赖 <dependency> <groupId>org.springframework.boot</gro

  • Spring Boot Web 静态文件缓存处理的方法

    采用Spring Boot + Freemarker开发Web项目时,由于一些静态文件比较大,如果是在PC上访问影响不大,当在手机上访问时,特别是用流量访问时速度会慢很多,而且很耗流量. 通过对请求进行抓包,可以发现每次进入一个页面都需要加载静态文件,如果不差钱的公司可以将静态文件放在CDN上来加快访问速度,或者用Nginx来做静态文件的缓存. 今天给大家介绍一种其他的缓存优化方式,通过Spring的缓存机制来缓存静态文件,在Spring Boot中配置静态文件缓存只需要在配置文件中加入下面的配

  • Spring Boot web项目的TDD流程

    目录 概述 1 技术工具 2 构建Spring Boot工程 3 开始编写测试和代码 1 Controller 2 Service 3 Repository 4 总结 概述 测试驱动开发可以分为三个周期,周而复始,红灯-绿灯-重构.由以下几个步骤构成: 编写测试 运行所有测试 编写代码 运行所有测试 重构 运行所有测试 一开始编写测试,肯定通不过,红灯状态,进行代码编写,然后运行测试,测试通不过,测试通过,即变成绿灯. 测试不通过,或者需要重构代码,再次运行所有测试代码... 接下来通过一个简单

  • Spring Boot集成Ehcache缓存解决方式

    本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能.在Spring Boot应用程序中,我们可以通过Spring Caching来快速搞定数据缓存. 接下来我们将介绍如何在三步之内搞定 Spring Boot 缓存. 1. 创建一个Spring Boot工程 你所创建的Spring Boot应用程序的maven依赖文件至少应该是下面的样子: <?xml version="1.0" encoding="UTF-8"?

  • Spring Boot整合EhCache的步骤详解

    本文讲解Spring Boot与EhCache的整合. 1 EhCache简介 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认CacheProvider.Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点. 2 Spring Boot整合EhCache步骤 2.

随机推荐