程序员Java学习笔记Spring Boot

SpringBoot配置拦截器空指针异常

2017-06-07  本文已影响1194人  罗曼蒂克

问题描述

拦截器中,@AutoWaired一个service,运行的时候发现该service对象为空


有问题的.png

对应的配置


配置.png

尝试过:

在拦截器中实现 ApplicationContextAware,获取ApplicationContext,然后手动获取bean

8F8C9B8C-3B03-4936-96AB-74E362F8A6EE.png

结果,对象还是为空

尝试在类上或者方法上加入注解 @DependsOn(redisService)

F9E2B227-A865-4FEC-9A4D-CAD723A6260F.png

加载类上启动就报错


0AA7B0EB-BF76-4148-9F1F-13FCE0E8B3BF.png

通过request获取ServletContext,然后再获取bean

还是找不到bean.png

最终,查阅博客找到一个解决方案

在添加拦截器的时候,要自动装配,不要直接new,如图

DA5FA230-E2D0-47E6-8D34-0424C8419378.png

最终

7F837293-4039-449E-B624-98D613185E0A.png

我对于这次问题的解决的理解是

自动装配解决的:在这个配置中,帮我去new一个requestInterceptor的时候,检查需要依赖redisService,然后它帮我new了一个redisService装配到requestInterceptor中去,才能new出一个requestInterceptor.
自动注入相关知识参考 Spring IOC和DI 的理解

在此多谢博客,dzl84394的专栏

上一篇 下一篇

猜你喜欢

热点阅读