• 拦截器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);
    

      

  • 相关阅读:
    checkbox的checked事件的javascript使用方法
    JSTL标签API(c)的使用
    radios控件的使用
    验证方法判斷input是否为空
    软件课设Day5
    软件课设Day4
    软件课设Day3
    软件课设Day2
    软件课设Day1
    2019/08/23最新进展
  • 原文地址:https://www.cnblogs.com/Andrew520/p/9501973.html
Copyright © 2020-2023  润新知