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注解,详细如下
  1. 单独配置 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();}}
    
  2. Shiro 类上面加注解 @AutoConfigureAfter(ShiroLifecycleBeanPostProcessorConfig.class)

      @Configuration@AutoConfigureAfter(ShiroLifecycleBeanPostProcessorConfig.class)public class ShiroConfig {...}
    
  3. 通过@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    // 前端后台管理系统


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部