问题描述
拦截器中,@AutoWaired一个service,运行的时候发现该service对象为空
有问题的.png
对应的配置
配置.png
尝试过:
8F8C9B8C-3B03-4936-96AB-74E362F8A6EE.png在拦截器中实现 ApplicationContextAware,获取ApplicationContext,然后手动获取bean
结果,对象还是为空
F9E2B227-A865-4FEC-9A4D-CAD723A6260F.png尝试在类上或者方法上加入注解
@DependsOn(redisService)
加载类上启动就报错
0AA7B0EB-BF76-4148-9F1F-13FCE0E8B3BF.png
还是找不到bean.png通过request获取ServletContext,然后再获取bean
最终,查阅博客找到一个解决方案
在添加拦截器的时候,要自动装配,不要直接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的专栏
网友评论