spring boot 集成shiro和redis (绝不坑你)

spring boot 集成shiro和redis (绝不坑你)

最近两天一直在弄shiro跟spring boot的整合,网上讨论的很多,但是真正搞懂的人很少,都是抄抄抄,我现在就将我这两天的所有结果分享给大家,供大家参考。
跟spring mvc 的集成很相像,但是也有很多不同的地方,主要体现在springboot 跟mvc的配置差异上。配置shiro,如果要跑起来,非常简答,跟着网上说的来就可以了,但是,真正比较完美的配置,至少我在百度上面还没有看到,身为代码洁癖的我,这是不能忍的。要配置shiro,基础工具就是缓存,没有缓存,你的配置将只能是一个玩具,一个在内存中玩玩而已的工具,我采用的redis。

一、spring boot 跟redis 的结合

1、导入。

首先是pom包,需要

<dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-data-redisartifactId>
dependency>

没错,就这一个就可以了,其他的都不需要。
注:我的sprint-boot 版本是2.0.4.RELEASE

2、配置

请查看org.springframework.boot.autoconfigure.data.redis.RedisProperties 源码,那里有全部的配置说明,这就是starter的好处,直接看源码远比你网上百度要好千倍万倍。这也是经验之谈了。配置好了redis之后,我们进入下一步。

3、使用

请查看org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration源码,那里面注册了两个bean,redisTemplate 和 stringRedisTemplate,那么意味着,你可以直接使用这两个template了,即可以直接使用了。至于如何继承到自己的项目中,你直接注册一个bean,然后将get、set、put、delete等方法通过redisTemplate实现了即可,如果看不懂,请移步,巩固基础。

二、redis实现shiro的cacheManager。

1、导入

首先还是要导入pom包,需要

<dependency><groupId>org.apache.shirogroupId><artifactId>shiro-springartifactId><version>1.4.0version>
dependency>

我这里使用1.4.0的,是我目前能看到的最新的

2、继承cacheManager

shiro要想使用cacheManager,就必须实现org.apache.shiro.cache.CacheManager类,才能与shiro集成。我这里直接继承了AbstractCacheManager,需要实现createCache方法。我的实现类如下:

public class ShiroRedisCacheManager extends AbstractCacheManager {private RedisTemplate<byte[],byte[]> redisTemplate;public ShiroRedisCacheManager(RedisTemplate redisTemplate){this.redisTemplate = redisTemplate;}//为了个性化配置redis存储时的key,我们选择了加前缀的方式,所以写了一个带名字及redis操作的构造函数的Cache类@Overrideprotected Cache createCache(String name) throws CacheException {return new ShiroRedisCache(redisTemplate,name);}
}

3、继承Cache

在cacheManage中,要实现createCache方法,就需要返回一个org.apache.shiro.cache.Cache

public class ShiroRedisCache implements Cache {private RedisTemplate redisTemplate;private String prefix = "shiro_redis";public String getPrefix() {return prefix+":";}public void setPrefix(String prefix) {this.prefix = prefix;}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部