今天遇见一个问题,在自定义拦截器中,使用了@Autowaire注解注入了jpa的dao,结果发现无法注入,注入的dao为空,查阅资料之后解决,解决方案如下
问题原因
拦截器加载的时间点在springcontext之前,所以在拦截器中注入自然为null
文件解决
在spring配置文件中这样写
@Bean
public HandlerInterceptor getMyInterceptor(){
return new MyInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getMyInterceptor());
super.addInterceptors(registry);
}
使用bean注解提前加载,即可成功。

本文介绍了解决自定义拦截器中无法注入DAO的问题。由于拦截器加载时间早于Spring Context,直接注入会导致DAO为空。通过将拦截器声明为Bean并使用@Bean注解提前加载的方式解决了此问题。
4830





