java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot缓存Ehcache

SpringBoot缓存Ehcache的使用详解

作者:springboot葵花宝典

EhCache、Redis比较常用,使用Redis的时候需要先安装Redis服务器,本文给大家介绍SpringBoot缓存Ehcache的使用详解,感兴趣的朋友跟随小编一起看看吧

spring缓存(EhCache)是在Spring3.1开始引入的,但是其本身只提供了缓存接口,不提供具体缓存的实现,其实现需要第三方缓存实现(Generic、EhCache、Redis等)。EhCache、Redis比较常用,使用Redis的时候需要先安装Redis服务器。

为什么引入缓存

SpringBoot抽象缓存

刚才说了Spring3.1引入了缓存接口,可以对接不同的缓存技术主要接口有:

代码实现

添加缓存依赖

在pom.xml中添加spring-boot-starter-cache。

<!--数据缓存-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

开启缓存

使用注解**@EnableCaching**注解开启缓存功能。

@Configuration
@EnableCaching
public class MyCacheConfig {
}

数据缓存

在缓存操作中常用的注解有以下:

@Cacheable

@Cacheable可以标记在方法和类上面,在执行的时候会先看缓存数据是否存在,如果存在直接返回缓存数据,如果不存在就会支付方法并将缓存返回到缓存中,常用的三个属性。

value:用于说明缓存的名称,可以指定一个或者多个。

key:缓存的键值可以为空,如果不为空需要安装SpEl表达方式编写。

condition:缓存的条件,可以为空,如果使用按照SpEl方式编写,返回true则缓存,false不缓存。

@Cacheable(value = "student",key = "#id",condition = "#id>11")
    @Override
    public Student findById(Long id) {
        return studentMapper.findById(id);
    }

@CachePut

@CachePut可以标注在方法和类上面,常用属性和**@Cacheable相同,不同之处在于执行方法前不会查看缓存中是否存在,而是方法执行完成以后将结果放入缓存中,多用于数据的添加和修改。

@CachePut(value = "student",key = "#student.id")
    @Override
    public Student updateStudent(Student student){
        studentMapper.updateStudent(student);
        return  student;
    }

@CacheEvict

@CacheEvict可以标注在方法和类方面,用于清除缓存,常用注解除了和@Cacheable相同以外还有。

@CacheEvict(value = "student",key = "#id",allEntries = true,beforeInvocation = true)
    public void deleteStudent(@Param("id") Long id){
        System.out.println("deleteStudent数据库..." + id);
         studentMapper.deleteStudent(id);
    }

集成EhCache

因为springboot只是缓存的抽象,要具体实现缓存还有依赖第三方缓存框架,我们这里介绍EhCache框架实现缓存。

添加EhCache依赖

在pom.xml中添加EhCache依赖。

<!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache -->
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.10.9.2</version>
        </dependency>

添加Ehcache相关配置

1、在src\main\resources路径下添加ehcache.xml文件。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd">
    <cache name="student"
           maxElementsInMemory="10000"
           eternal="true"
           overflowToDisk="true"
           diskPersistent="true"
           diskExpiryThreadIntervalSeconds="600"/>
</ehcache>

注解含义:

2、在application.yml添加ehcache.xml的路径。

spring:
  cache:
    type: ehcache
    ehcache:
      config: classpath:/ehcache.xml

ehcache.config的默认路径为src\main\resourcesehcache.xm,所以也可以不配置。

测试

1、测试@Cacheable(value = "student",key = "#id",cndition = "#id>11")使用postman测试接口http://localhost:8899/student/select/11。

点击两次我们在console发现,两次都进入了方法,这是因为我们有判断添加id大于11才会放入缓存中。

如果id>11例如http://localhost:8899/student/select/13,那么点击两次的情况下,我们只进入了方法一次。

其他测试可以自行测试,这里就不过多测试了。

到此这篇关于SpringBoot缓存Ehcache的使用的文章就介绍到这了,更多相关SpringBoot缓存Ehcache内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文