拦截器中无法注入Mapper、Service的问题

本文解决在Spring Boot项目中,自定义拦截器注入Service或Mapper失败的问题。通过将拦截器托管给Spring容器,确保依赖正确注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拦截器中无法注入Mapper、Service

写登录认证拦截器的时候碰到一个小问题:在拦截器中如果没有用到mapper、service时,一切正常;但是一旦用到mapper、service,就报空指针异常,一开始以为是没有查到数据(事实上没查到和查不了是两回事~~只是简单没查到的话也应该返回一个空对象),不过通过debug,发现是mapper为空,也就是根本没有注入!!先后检查了mapper、interceptor有没有分别加上@Mapper、@Component,发现都解决不了。

猜测:是不是拦截器创建的时候,mapper还没来得及注入

结果:还真是这样…

拦截器原来的配置

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new JWTInterceptor())
                .addPathPatterns("/user/**");//其他接口验证token直接拦截器拦截
    }
}

注意看!这里是在添加拦截器的时候new了一个拦截器,并没有将拦截器托管给IOC容器,所以就有了一个先后(我猜的)

修改后的配置

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Bean
    public JWTInterceptor jwtInterceptor(){
        return new JWTInterceptor();
    }


    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(jwtInterceptor())
                .addPathPatterns("/user/**")
                .addPathPatterns("/logout");
    }
}

将拦截器注成bean交给Spring托管

参考博客:

(37条消息) 拦截器中不能注入Java bean?_hanjq_code的博客-CSDN博客

(37条消息) SpringBoot自定义拦截器注入Service_咋暖还寒时候的博客-CSDN博客_拦截器注入service

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值