springboot整合shiro添加缓存

ehcache\redis

  1. 增加缓存后的作用

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

  1. 增加缓存后的结构图
    20220904142930.png
  2. 代码具体实现 EHcache

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

		//增加shiro与ehcache之间的依赖关系
                <dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-ehcache</artifactId>
			<version>1.9.1</version>
		</dependency>

增加 配置文件中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

		<!--lombok注解-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
		<!--添加redis依赖1-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>

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完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值