springboot整合shiro添加缓存

ehcache\redis

  1. 增加缓存后的作用

用来减轻数据库的访问压力。从而提高系统的访问速度
使用cacheManager

  1. 增加缓存后的结构图
    springboot整合shiro添加缓存_第1张图片
  2. 代码具体实现 EHcache

增加pom文件中shiro和ehcache之间的依赖关系

		//增加shiro与ehcache之间的依赖关系
                
			org.apache.shiro
			shiro-ehcache
			1.9.1
		

增加 配置文件中realms 自定义文件缓存开启代码新增编写

    @Bean
    public MyRealm myRealm(){
        MyRealm  myRealm = new MyRealm();
        //此处添加认证器 及 散列次数
        //HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
        //credentialsMatcher.setHashAlgorithmName("md5");
        // 2.1、设置 散列次数
        //credentialsMatcher.setHashIterations(12);

        //myRealm.setCredentialsMatcher(credentialsMatcher);

        //增加缓存优化新增
        myRealm.setCacheManager(new EhCacheManager());
        myRealm.setCachingEnabled(true);//设置全局缓存开启
        myRealm.setAuthenticationCachingEnabled(true);// 开启缓存-针对认证功能
        myRealm.setAuthorizationCachingEnabled(true);//开启授权缓存
        myRealm.setAuthenticationCacheName("authenticateName");//开启认证名字全称
        myRealm.setAuthorizationCacheName("authorizationName");//开启授权名字全称
        return myRealm;
    }
  1. 代码实现缓存redis

1、增加redis 万Pom.、xml jar

		
		
			org.projectlombok
			lombok
		
		
		
			org.springframework.boot
			spring-boot-starter-data-redis
		

2、新创建RedisCacheManager.java文件


/**
 * 实现cacheManager
 */
public class RedisCacheManager implements CacheManager {
    @Override
    public <K, V> Cache<K, V> getCache(String s) throws CacheException {
        return new RedisCache<K,V>();
    }
}

2.1、创建RedisCache 部分文件

public class RedisCache<K,V> implements Cache<K,V> {
    private String cacheName;

    public RedisCache(String cacheName) {
        this.cacheName = cacheName;
    }

    public RedisCache() {
    }

    @Autowired
    private RedisTemplate redisTemplate;
    @Override
    public V get(K k) throws CacheException {
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        Object o = redisTemplate.opsForHash().get(this.cacheName,k.toString());
        return (V) o;
    }

    @Override
    public V put(K k, V v) throws CacheException {
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.opsForHash().put(this.cacheName,k.toString(),v);
        return null;
    }

    @Override
    public V remove(K k) throws CacheException {
        redisTemplate.opsForHash().delete(this.cacheName,k.toString());
        return null;
    }
....此处略去

3、新增configure文件realms文件内容

@Bean
    public MyRealm myRealm(){
        MyRealm  myRealm = new MyRealm();
        //此处添加认证器 及 散列次数
        //HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
        //credentialsMatcher.setHashAlgorithmName("md5");
        // 2.1、设置 散列次数
        //credentialsMatcher.setHashIterations(12);

        //myRealm.setCredentialsMatcher(credentialsMatcher);

        //增加缓存优化新增
        myRealm.setCacheManager(new RedisCacheManager());
        myRealm.setCachingEnabled(true);//设置全局缓存开启
        myRealm.setAuthenticationCachingEnabled(true);// 开启缓存-针对认证功能
        myRealm.setAuthorizationCachingEnabled(true);//开启授权缓存
        myRealm.setAuthenticationCacheName("authenticateName");//开启认证名字全称
        myRealm.setAuthorizationCacheName("authorizationName");//开启授权名字全称
        return myRealm;
    }

至此,springboot整合shiro和整合缓存管理器ehcache与redis完成。

你可能感兴趣的:(Java,shiro框架,spring系列框架,缓存,spring,boot,java)