zoukankan      html  css  js  c++  java
  • 拦截器HandlerInterceptor内部也可以注入bean,代码纠正补充

    原文地址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);
    

      

  • 相关阅读:
    oss blob上传
    app中画一条细线
    antd和原生交互,原生掉前端的方法
    -webkit-touch-callout 图片下载
    ifram嵌入网址 有跨域问题
    ...state
    数组对象的复制
    在vue中使用tinymce组件
    autofs自动挂载服务
    podmen
  • 原文地址:https://www.cnblogs.com/Andrew520/p/9501973.html
Copyright © 2011-2022 走看看