zoukankan      html  css  js  c++  java
  • 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法

    最近使用SpringBoot的自定义拦截器,在拦截器中注入了一个DAO,准备下面作相应操作,拦截器代码:

    public class TokenInterceptor implements HandlerInterceptor {
        @Autowired
        private ITokenDao tokenDao;
        
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
         
        }
        
        ...
    }

    配置信息代码:

    @Configuration
    public class InterceptorConfig extends WebMvcConfigurerAdapter {
        
        /**
         *
         * @param registry
         */
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new TokenInterceptor())
                    .excludePathPatterns("/user/login");
            super.addInterceptors(registry);
        }
    
    }

    看似没有问题,但运行结果发现Token拦截器中注入的DAO为null。

    原因

    造成null的原因是因为拦截器加载是在springcontext创建之前完成的,所以在拦截器中注入实体自然就为null。

    解决

    解决方法就是让bean提前加载,将配置信息修改为如下:

    @Configuration
    public class InterceptorConfig extends WebMvcConfigurerAdapter {
    
        @Bean
        public HandlerInterceptor getTokenInterceptor(){
            return new TokenInterceptor();
        }
        
        /**
         *
         * @param registry
         */
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(getTokenInterceptor())
                    .excludePathPatterns("/user/login");
            super.addInterceptors(registry);
        }
    
    }

    重新运行DAO即可注入成功。

  • 相关阅读:
    hdu 4297 One and One Story 夜
    hdu 4280 Island Transport 夜
    1389. Roadworks 夜
    hdu 4289 Control 夜
    hdu 4291 A Short problem 夜
    hdu 4284 Travel 夜
    1080. Map Coloring 夜
    正则中的转义符\
    起重复出现作用的量词*和+
    安卓的权限大全和动态使用安卓权限
  • 原文地址:https://www.cnblogs.com/weknow619/p/8549566.html
Copyright © 2011-2022 走看看