springboot整合单机缓存ehcache的实现

 更新时间:2023年02月13日 09:37:35   作者:chenxianchon  
本文主要介绍了springboot整合单机缓存ehcache的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

区别于redis的分布式缓存,ehcache是纯java进程内的单机缓存,根据不同的场景可选择使用,以下内容主要为springboot整合ehcache以及注意事项

添加pom引用

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.10.9.2</version>
</dependency>

启动类添加开启缓存注解:@EnableCaching

添加xml配置,注意,ehcache需要单独的配置文件

<?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">
 
    <!--默认缓存策略 -->
    <!-- external:是否永久存在,设置为true则不会被清除,此时与timeout冲突,通常设置为false-->
    <!-- diskPersistent:是否启用磁盘持久化-->
    <!-- maxElementsInMemory:最大缓存数量-->
    <!-- overflowToDisk:超过最大缓存数量是否持久化到磁盘-->
    <!-- timeToIdleSeconds:最大不活动间隔,设置过长缓存容易溢出,设置过短无效果,可用于记录时效性数据,例如验证码-->
    <!-- timeToLiveSeconds:最大存活时间-->
    <!-- memoryStoreEvictionPolicy:缓存清除策略-->
    <defaultCache
            eternal="false"
            diskPersistent="false"
            maxElementsInMemory="1000"
            overflowToDisk="false"
            timeToIdleSeconds="60"
            timeToLiveSeconds="60"
            memoryStoreEvictionPolicy="LRU" />
 
 
    <cache name="cache1"
           eternal="false"
           diskPersistent="false"
           maxElementsInMemory="1000"
           overflowToDisk="false"
           timeToIdleSeconds="2"
           timeToLiveSeconds="2"
           memoryStoreEvictionPolicy="LRU" />
</ehcache>

这里我定义了一个缓存名字为cache1

修改项目的配置文件application.properties,添加spring缓存类型以及缓存配置文件路径

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

上面的步骤做好之后,就可以使用了

给你需要加缓存的方法添加注解

@Configuration
public class TestConfig {
 
    @Cacheable(value = "cache1",key = "#id")
    public TestController.Person create(String id) {
        return new TestController.Person();
    }
}

这里的value跟xml配置文件里的一致即可

我们调用一下测试看看

    @GetMapping("/testCache1")
    public void testCache1(@Param("id") String id) throws InterruptedException {
        Person obj1 = testConfig.create(id);
        Person obj2 = testConfig.create(id);
        Thread.sleep(3000);
        Person obj3 = testConfig.create(id);
        Person obj4 = testConfig.create(id);
 
        log.info("test1:"+obj1.toString());
        log.info("test2:"+obj2.toString());
        log.info("test3:"+obj3.toString());
        log.info("test4:"+obj4.toString());
        System.out.println(obj1.equals(obj2));
    }

执行一下结果看

可以看到,obj1跟obj2是同一个对象,当程序睡眠了三秒之后,再次调用方法,就会重新创建对象,缓存生效

注意事项:

@Cacheable修饰的方法必须是public并且不能是static,原理是因为使用了动态代理,需要重写方法

xml里面的配置要写全,要不然项目启动报错,就是下图这些

xml里面配置的defaultCache没看出有啥用,我也没删了试试

使用缓存的方法不能在@RestController修饰的类中,即不能在controller层,要不然缓存失效,可以在@Service、@Configuratin、@Component等类下面

到此这篇关于springboot整合单机缓存ehcache的实现的文章就介绍到这了,更多相关springboot单机缓存ehcache内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 中星号(*)的用法小结

    Python 中星号(*)的用法小结

    星号​​*​​ 往往被称为乘法运算符,是所有程序中最为常用的运算符号之一,在Python 中,星号还有很多隐藏的强大功能, 本文将用最容易理解的例子来解释星号*的 五个使用场景,从初级用法到高阶用法,感兴趣的朋友可以参考下
    2023-08-08
  • python 3.6.2 安装配置方法图文教程

    python 3.6.2 安装配置方法图文教程

    这篇文章主要为大家详细介绍了python 3.6.2 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • python 寻找优化使成本函数最小的最优解的方法

    python 寻找优化使成本函数最小的最优解的方法

    这篇文章主要介绍了python 寻找优化使成本函数最小的最优解的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Python3调用百度AI识别图片中的文字功能示例【测试可用】

    Python3调用百度AI识别图片中的文字功能示例【测试可用】

    这篇文章主要介绍了Python3调用百度AI识别图片中的文字功能,结合实例形式分析了Python3安装及使用百度AI接口的相关操作技巧,并附带说明了百度官方AI平台的注册及接口调用操作方法,需要的朋友可以参考下
    2019-03-03
  • 五个有趣的Python整蛊小程序合集

    五个有趣的Python整蛊小程序合集

    Python 能做很多无聊,但有意思的事情。本文为大家精心准备了五个整蛊朋友的小程序,文中的示例代码讲解详细,感兴趣的小伙伴快动手试一试
    2022-04-04
  • Python机器学习之决策树算法

    Python机器学习之决策树算法

    这篇文章主要为大家详细介绍了Python机器学习之决策树算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • python利用hook技术破解https的实例代码

    python利用hook技术破解https的实例代码

    python利用hook技术破解https的实例代码,需要的朋友可以参考一下
    2013-03-03
  • 对Python3中dict.keys()转换成list类型的方法详解

    对Python3中dict.keys()转换成list类型的方法详解

    今天小编就为大家分享一篇对Python3中dict.keys()转换成list类型的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python使用ConfigParser模块操作配置文件的方法

    Python使用ConfigParser模块操作配置文件的方法

    这篇文章主要介绍了Python使用ConfigParser模块操作配置文件的方法,结合实例形式分析了Python基于ConfigParser模块针对配置文件的创建、读取、写入、判断等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Python虚拟环境virtualenv创建及使用过程图解

    Python虚拟环境virtualenv创建及使用过程图解

    这篇文章主要介绍了Python虚拟环境virtualenv创建及使用过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12

最新评论