ehcache是一种第三方缓存技术,它出自hibernate,在hibernate中使用它作为数据缓存的解决方案。
ehcache要想与shiro做整合,
首先需要提供一个ehcache自己的配置文件:
ehcache.xml
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
<diskStore path="D:\ws"/>
<!--
maxElementsInMemory 最大缓存元素个数
eternal 缓存是否永久有效,一般都是false。
timeToIdleSeconds 最长空闲时间
timeToLiveSeconds 最长生命周期
overflowToDisk 是否持久化到磁盘
maxElementsOnDisk 磁盘上放的最大元素个数
diskPersistent 磁盘上是否永久有效
diskExpiryThreadIntervalSeconds 清理周期
memoryStoreEvictionPolicy 清理规则,LRU最近最少使用 FIFO先进先出
-->
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
</ehcache>
提供了
ehcache自己的配置文件后,需要在shiro的安全管理器配置文件中引入 ehcache的cacheManager对象
配置如下:
<!-- shiro安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="customRealm"></property>
<property name="cacheManager" ref="cacheManager"></property>
</bean>
<!-- 配置ehcache 二级缓存-->
<bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
<property name="cacheManagerConfigFile" value="classpath:ehcache.xml"></property>
</bean>
至此,
ehcache就配置成功了,在进行shiro的认证与授权时,会把相关信息存到ehcache的缓存中,缓存生命周期根据ehcache自己的配置文件而定。