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

网友投稿 394 2023-01-27


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

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

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

@Reference

CoreRedisService redisService;

@Value("${channel}")

private String channel;

@Value("${allowMethod}")

private String allowMethod;

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

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

可以看到三个值都为null。

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

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

http://

package com.***;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ConnWcSjPpwqIfiguration;

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:

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:共享文件系统怎么设置密码(共享文件需要密码怎么设置)
下一篇:Vue实现textarea固定输入行数与添加下划线样式的思路详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~