Shiro缓存管理器EhCacheManager的使用方法

Shiro缓存可以用来临时缓存权限信息,这样就不用每一次权限信息认证的时候都去数据库查询,可以打打提高效率

1.ShiroConfig类中声明缓存管理器对象EhCacheManager

2.给DefaultWebSecurityManager安全管理器对象注入EhCacheManager

@Configuration//替代xml文件
public class ShiroConfiguration {
    
    
//缓存管理对象
    @Bean
    public EhCacheManager getEhCacheManager(){
    
    
        EhCacheManager ehCacheManager = new EhCacheManager();
        //配置缓存管理器对象
        ehCacheManager.setCacheManagerConfigFile("classpath:ehcache.xml");
        return ehCacheManager;
    }
//设置安全管理器对象用于执行授权流程,并注入自定义的MyRealm,用于授权和认证
    @Bean
    public DefaultWebSecurityManager getDefaultWebSecurityManager(MyRealm myRealm){
    
    
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(myRealm);
        //给安全管理器设置缓存管理器对象
        securityManager.setCacheManager(getEhCacheManager());
        return securityManager;
    }
 }

3.用xml文件配置缓存管理器对象
ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache updateCheck="false" dynamicConfig="false">

    <diskStore path="C:\TEMP" />

    <cache name="users"  timeToLiveSeconds="300"  maxEntriesLocalHeap="1000"/>

    <defaultCache name="defaultCache"
                  maxElementsInMemory="10000"
                  eternal="false"
                  timeToIdleSeconds="120"
                  timeToLiveSeconds="120"
                  overflowToDisk="false"
                  maxElementsOnDisk="100000"
                  diskPersistent="false"
                  diskExpiryThreadIntervalSeconds="120"
                  memoryStoreEvictionPolicy="LRU"/>
    <!--缓存淘汰策略:当缓存空间比较紧张时,我们要存储新的数据进来,就必然要删除一些老的数据
        LRU 最近最少使用
        FIFO 先进先出
        LFU  最少使用
    -->
</ehcache>

关于ehcache.xml的参数信息详解

猜你喜欢

转载自blog.csdn.net/TheWayForDream/article/details/121598362