问题描述
拦截器中,@AutoWaired一个service,运行的时候发现该service对象为空
对应的配置
尝试过:
在拦截器中实现 ApplicationContextAware,获取ApplicationContext,然后手动获取bean
结果,对象还是为空
尝试在类上或者方法上加入注解
@DependsOn(redisService)
加载类上启动就报错
通过request获取ServletContext,然后再获取bean
最终,查阅博客找到一个解决方案
在添加拦截器的时候,要自动装配,不要直接new,如图
最终
我对于这次问题的解决的理解是
自动装配解决的:在这个配置中,帮我去new一个requestInterceptor的时候,检查需要依赖redisService,然后它帮我new了一个redisService装配到requestInterceptor中去,才能new出一个requestInterceptor.
自动注入相关知识参考 Spring IOC和DI 的理解
在此多谢博客,dzl84394的专栏