欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

SpringBoot的拦截器中依赖注入为null的解决方法

时间:2021-06-07 08:54:06|栏目:JAVA代码|点击:

该项目是基于SpringBoot框架的Maven项目。

今天在拦截器中处理拦截逻辑时需要使用注解调用其他方法 并且要从配置文件中读取参数。所以我使用了以下注解:

  @Reference
  CoreRedisService redisService;

  @Value("${channel}")
  private String channel;

  @Value("${allowMethod}")
  private String allowMethod;

一个是获取接口的引用,两外两个是获取配置文件中的参数,

但是在debug过程中发现三个都没有注入进来出现了下图所示的情况:

 

可以看到三个值都为null。

然后我查看了我项目的配置,确定该拦截器的位置是否在注解的范围内。发现没问题, 百度了一下,发现了有个问题:拦截器加载的时间点在springcontext之前,所以在拦截器中注入自然为null

根据解决方法在配置拦截器链的类中先注入这个拦截器,代码如下:

package com.***;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * 配置拦截器链
 * Created by yefuliang on 2017/10/23.
 */
@Configuration
public class bgqWebAppConfigurer extends WebMvcConfigurerAdapter {

  @Bean
  public bgqCommonInterceptorl bgqCommonInterceptorl() {
    return new bgqCommonInterceptorl();
  }

  public void addInterceptors(InterceptorRegistry registry) {
    // 多个拦截器组成一个拦截器链
    // addPathPatterns 用于添加拦截规则
    // excludePathPatterns 用户排除拦截
    registry.addInterceptor(bgqCommonInterceptorl()).addPathPatterns("/**");
    super.addInterceptors(registry);
  }
}

注意注入的是拦截器类,不是你拦截器里面要注入的类,然后拦截器链的 registry.addInterceptor(bgqCommonInterceptorl()).addPathPatterns(“/**”);

里面的第一个参数就不需要你再重新new一个了。

改好之后debug:

 

可以看到,都注入了进来,问题解决。

上一篇:Android 应用按返回键退向后台运行实例代码

栏    目:JAVA代码

下一篇:Java使用Jdbc连接Oracle执行简单查询操作示例

本文标题:SpringBoot的拦截器中依赖注入为null的解决方法

本文地址:http://www.codeinn.net/misctech/136996.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有