记录:解决springboot拦截器@Autowried注入为空,导致redisUtil为null空指针问题

描述:想用redis来实现token登录,生成的token保存在redis中,然后以全局拦截器的形式葱请求中获取token进行校验,问题就发生了,RedisUtil类一直无法注入。如下图;

问题:springboot自定义拦截器时@Autowired下的Bean为null

原因:拦截器加载的时间点在springcontext之前,所以在拦截器中注入自然为null

记录:解决springboot拦截器@Autowried注入为空,导致redisUtil为null空指针问题_第1张图片 解决办法:

解决方式:

方式一:手动获取bean

记录:解决springboot拦截器@Autowried注入为空,导致redisUtil为null空指针问题_第2张图片

//手动获取
RedisUtil redisUtil = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()).getBean(RedisUtil.class);

方式二:bean注解提前加载,即可成功;

记录:解决springboot拦截器@Autowried注入为空,导致redisUtil为null空指针问题_第3张图片

记录:解决springboot拦截器@Autowried注入为空,导致redisUtil为null空指针问题_第4张图片

附上涉及代码:

/**
 * 拦截器
 */
@Configuration
public class WebAppConfiguration implements WebMvcConfigurer {

    @Autowired
    private RedisUtil redisUtil;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        //注册拦截器
        InterceptorRegistration interceptorRegistry = registry.addInterceptor(new AuthorizationInterceptor(redisUtil));
        //配置拦截路径
        interceptorRegistry.addPathPatterns("/**");//拦截所有
    }
    
}


//AuthorizationInterceptor.java
public AuthorizationInterceptor(RedisUtil redisUtil) {
        this.redisUtil = redisUtil;
}

❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ 

❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~

❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言)

你可能感兴趣的:(#,springboot,拦截器无法注入bean,Autowired,注入为空)