springboot_shiro_redis整合(三)-redis参数配置-shiro-权限控制
目录
文章目录
内容
在前面的整合中,这么个问题,那就是在ShiroConfig配置类无法注入application.yml中的redis配置信息,那么小伙伴找到解决方法了吗?
刚开始以为是springboot @Value注解问题,但是搜索文章,各种尝试后无果。
那么既然是整合shiro,是不是和shiro有关呢,又继续搜索‘Spring Boot集成Shiro,配置类无法注入配置参数’相关的问题,哎尝试之后问题解决了。
- 问题bean:LifecycleBeanPostProcessor-shiro生命周期处理器
- 解决方法:把上述bean单独配置,然后在ShiroConfig上面加@AutoConfigureAfter注解,详细如下
-
单独配置 LifecycleBeanPostProcessor
package com.ihrm.common.config; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ShiroLifecycleBeanPostProcessorConfig { /** * Shiro生命周期处理器 * * @return */ @Bean(name = "lifecycleBeanPostProcessor") public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } }
-
Shiro 类上面加注解 @AutoConfigureAfter(ShiroLifecycleBeanPostProcessorConfig.class)
@Configuration @AutoConfigureAfter(ShiroLifecycleBeanPostProcessorConfig.class) public class ShiroConfig { ... }
-
通过@Value注入redis参数,生成RedisManager Bean
@Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.timeout}") private int timeout; @Value("${spring.redis.jedis.pool.max-active}") private int maxTotal; @Value("${spring.redis.jedis.pool.max-wait}") private long maxWaitMillis; @Value("${spring.redis.jedis.pool.max-idle}") private int maxIdle; @Value("${spring.redis.jedis.pool.min-idle}") private int minIdle; // @Bean(name = "redisSessionDAO") // public RedisSessionDAO sessionDAO() { // return new RedisSessionDAO(); // } @Bean public RedisManager redisManager() { RedisManager redisManager = new RedisManager(); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); System.out.println(minIdle + " " + maxIdle + " " + maxWaitMillis + " " +maxTotal); jedisPoolConfig.setMaxTotal(maxTotal); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMinIdle(minIdle); JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout); redisManager.setJedisPool(jedisPool); // redisManager.setHost(host); // redisManager.setTimeout(timeout); if (StringUtils.isNotBlank(password)) { redisManager.setPassword(password); } // System.out.println(env); return redisManager; }
具体原理不是很懂,完整项目代码请查看下面仓库地址。
参考文章:解决Spring Boot集成Shiro,配置类使用Autowired无法注入Bean问题
后记 :
本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785
后端JAVA源代码地址:https://gitee.com/gaogzhen/ihrm-parent // 后端项目
前端项目源代码地址:https://gitee.com/gaogzhen/ihrm-vue // 前端后台管理系统