笔记:关于SpringBoot 拦截器注入redis为null的问题

一个坑,做个笔记,源于自己学艺不精。

基于springboot环境下整合redis的时候,遇到的问题:

在springboot环境下,拦截器中去获取redis的key数据的时候,发现无论怎么做都没办法获取到对应的key信息,直接空指针

在redis Manager下直接通过get命令是可以查到该值的,于是通过debug发现,在拦截器里的redis是null。

恰好网上搜到类似的情况,发现问题出在这里:因为拦截器这里是学习他人的写法,所以在未引入redis的时候,这里并没有

发现任何异常。加入redis之后,在调用拦截器就直接空指针了。

原因是在我的自定义拦截器里面已经注入了redis,然鹅在注册自定义拦截器的时候,addInterceptor方法那里用的是new方法

在spring中,我们的类已经交给框架管理了,一般来说不需要再手动new一个。貌似通过直接new的方式,对应类中的注入就失效

了。为了验证:因此写了一个小demo更清楚的展示。一个实体类:Audemo,注入到AuFunction中

在controller下调用AuFunction的getdemo方法,并且采用new的方式

结果:java.lang.NullPointerException: null

查看源码,在执行方法的时候,会去获取参数中的类对应的bean的,但是因为我这里没有注入,直接new

导致该类并未受到框架的管理,拿不到对应的bean,所以导致空指针异常。

于是简单改了一下:

再执行就正常打印了:

所以,拦截器这么写就能获取到redis实例了:

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值