springboot_shiro_redis整合(三)-redis参数配置-shiro-权限控制
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;@Configurationpublic 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();// }@Beanpublic 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 // 前端后台管理系统
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
