今天在写短信接口的时候遇到了一写问题,做一个记录。
写储存短信验证码的工具类时,方法都是定义静态的,注入redisTemplate类时出现了问题。
在解决这个问题前,我先去仔细地了解了下 关于注入的几个注解
Autowired:自动注入,自动从spring的上下文找到合适的bean来注入;
Resource:用来指定bean名称注入;
Qualifier和Autowired配合使用:指定bean的名称来注入;
所以我的解决办法就是这样:
@Autowired
private static RedisTemplate redisTemplate
加了static修饰
然后在静态方法里面调用的时候就会间接的报空指针异常的错误
关于为什么注入不能用静态修饰我后来了解了,至于为什么我看到一篇博客写的很好
https://blog.csdn.net/qq_43842093/article/details/121062551?spm=1001.2014.3001.5506
由于刚入门的水平能力比较差,询问了其他人之后他告诉我可以手动注入(用构造方法来注入)来写
private static RedisTemplate redisTemplate = null
public Demo1(@Qualifier("redisTemplate") RedisTemplate redisTemplates){
redisTemplate = redisTemplates }
这么写之后在调用就不会报空指针异常了,我在网上看到其他人的解决办法
https://www.jianshu.com/p/47078f33412e
看起来挺靠谱的 还没试过,有空的时候看看。