原文地址https://www.jianshu.com/p/890c23a1b3d7
原文内容
1、拦截器内无法通过SpringBean的方式注入LoggerJPA,我只能通过另外一种形式。
private <T> T getDAO(Class<T> clazz,HttpServletRequest request)
{
BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
return factory.getBean(clazz);
}
2、 然后在拦截器内部需要LoggerJPA对象的地方获取就行。
LoggerJPA loggerDAO = getDAO(LoggerJPA.class,request);
loggerDAO.save(loggerEntity);
纠正如下:
原配置为
自定义的拦截器内部是可以用spring注入的方式注入bean对象的
1、在拦截器配置中LoggerConfguration 添加bean,同时将new LoggerInterceptor() 改为loggerInterceptor(),此操作是将拦截器注册为bean也交给spring管理,这样拦截器内部注入其他的bean对象也就可以被spring识别了
@Configuration
public class LoggerConfguration extends WebMvcConfigurerAdapter
{
@Bean
LoggerInterceptor loggerInterceptor(){
return new LoggerInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loggerInterceptor()).addPathPatterns("/**");
}
}
2、拦截器内部调用原来为
LoggerJPA loggerDAO = getDAO(LoggerJPA.class,request);
loggerDAO.save(loggerEntity);
该为:运行后成功,不会出现bean未注入,报空指针的情况。
loggerJPA.save(loggerEntity);
转载于:https://www.cnblogs.com/Andrew520/p/9501973.html