JAVA全系列 教程
3762个小节阅读:7092.6k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
ehcache是用来管理缓存的一个工具,其缓存的数据可以放在内存中,也可以放在硬盘上。ehcache的核心是CacheManager,一切的ehcache的应用都是从CacheManager开始的。
引入shiro和ehcache整合包
xxxxxxxxxx
<!-- shiro和ehcache整合包 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>1.9.0</version>
</dependency>
创建配置文件shiro-ehcache.xml
xxxxxxxxxx
<?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 path="java.io.tmpdir/Tmp_EhCache"/>
<!--
默认缓存设置
maxElementsInMemory:缓存最大数目
maxEntriesLocalHeap:指定允许在内存中存放元素的最大数量。
timeToIdleSeconds:一个元素在不被请求的情况下允许在缓存中存活的最大时间。0表示永久有效。
timeToLiveSeconds:无论一个元素闲置与否,其允许在Cache中存活的最大时间。0表示永久有效。
diskExpiryThreadIntervalSeconds:检查元素是否过期的线程多久运行一次
-->
<defaultCache
maxElementsInMemory="10000"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
diskExpiryThreadIntervalSeconds="120"/>
<!-- 授权缓存设置 -->
<cache name="authorizationCache"
maxEntriesLocalHeap="2000"
timeToIdleSeconds="0"
timeToLiveSeconds="0">
</cache>
</ehcache>
在配置文件创建CacheManager
xxxxxxxxxx
// 创建CacheManager
@Bean
public EhCacheManager ehCacheManager() {
EhCacheManager ehCacheManager = new EhCacheManager();
ehCacheManager.setCacheManagerConfigFile("classpath:shiro-ehcache.xml");
return ehCacheManager;
}
在SecurityManager中配置CacheManager
xxxxxxxxxx
@Bean
public DefaultWebSecurityManager securityManager(MyRealm myRealm,
MyRealm2 myRealm2,
SessionManager sessionManager,
CookieRememberMeManager rememberMeManager,
EhCacheManager ehCacheManager){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 自定义Realm放入SecurityManager中
// securityManager.setRealm(myRealm);
// 设置Realm管理者(需要设置在Realm之前)
securityManager.setAuthenticator(modularRealmAuthenticator());
List<Realm> realms = new ArrayList();
realms.add(myRealm);
// realms.add(myRealm2);
securityManager.setRealms(realms);
securityManager.setSessionManager(sessionManager);
securityManager.setRememberMeManager(rememberMeManager);
securityManager.setCacheManager(ehCacheManager);
return securityManager;
}
启动项目,测试权限缓存。
实时效果反馈
1. 缓存指
A 存在于处理器中的一块数据
B 存在于内存中的一块数据
C 存在于磁盘中的一块数据
D 存在于显卡中的一块数据
2. ehcache的核心是对象
A CacheHandler
B Cache
C CacheManager
D CacheManagement
答案
1=>B 2=>C