前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shiro笔记(八)springboot 整合shiro框架,使用这个ehcache缓冲技术

shiro笔记(八)springboot 整合shiro框架,使用这个ehcache缓冲技术

作者头像
一写代码就开心
发布2021-08-10 10:25:28
5200
发布2021-08-10 10:25:28
举报
文章被收录于专栏:java和python

目录

ehcache简介

EHCache是sourceforge的开源缓存项目,现已经具有独立官网,网址:(http://www.ehcache.org)。其本身是纯JAVA实现的,所以可以和绝大多数Java项目无缝整合,例如:Hibernate的缓存就是基于EHCache实现的。

EHCache支持内存和磁盘缓存,默认是存储在内存中的,当内存不够时允许把缓存数据同步到磁盘中,所以不需要担心内存不够问题。

EHCache支持基于Filter的Cache实现,同时也支持Gzip压缩算法提高响应速度。

为什么使用这个ehcache技术

现在的问题,我们在页面只用shiro标签实现是否有权限,或者注解判断是否有权限,每一个标签,或者每一个注解,都会走realm里面的授权的方法,里面会从数据库查询权限之后,放到权限对象里面。每一个标签或者注解都会走这个方法,都会进行查询数据库一次,我们的项目里面是使用了很多的权限标签和注解的,每一个都走数据库,那么是不好的。

所以我们希望就查询数据库一次,把查询出来的数据放到缓冲里面,以后每一个权限标签 或者 注解都走缓冲就可以了。

代码实现

添加依赖

代码语言:javascript
复制
2.1添加依赖
从3.0版本开始groupid为org.ehcache
        <!--配置SpringBoot整合EHCache的依赖-->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-ehcache</artifactId>
            <version>1.4.2</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

写ehcache的配置文件

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<ehcache name="ehcache" updateCheck="false">

    <!-- 磁盘缓存位置 -->
    <diskStore path="java.io.tmpdir"/>
    <!-- 默认缓存 -->
    <defaultCache
            maxEntriesLocalHeap="1000"
            eternal="false"
            timeToIdleSeconds="3600"
            timeToLiveSeconds="3600"
            overflowToDisk="false">
    </defaultCache>

    <!-- 登录记录缓存 锁定10分钟 -->
    <cache name="loginRecordCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="600"
           timeToLiveSeconds="0"
           overflowToDisk="false"
           statistics="true">
    </cache>

</ehcache>

有了这个配置文件,需要我们的项目识别,也就是这个配置的对象需要shiro框架识别,那么就需要在shiro配置文件里面配置,要放到securitymanager对象里面。

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//创建Bean方法,ehCacheManager
    @Bean
    public EhCacheManager ehCacheManager(){
        //创建ehCacheManager对象
        EhCacheManager ehCacheManager=new EhCacheManager();
        //获取配置文件的流对象
        InputStream is=null;
        try{
             is = ResourceUtils.getInputStreamForPath("classpath:ehcache/ehcache-shiro.xml");

        }catch (Exception e){
            e.printStackTrace();
        }
        //获取CarManager对象
        net.sf.ehcache.CacheManager cacheManager = new net.sf.ehcache.CacheManager(is);
        ehCacheManager.setCacheManager(cacheManager);
        //返回
        return  ehCacheManager;

    }
在这里插入图片描述
在这里插入图片描述

以上配置好之后,realm里面的授权代码,就会只是执行一次啦

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • ehcache简介
  • 为什么使用这个ehcache技术
  • 代码实现
    • 添加依赖
      • 写ehcache的配置文件
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档