[踩坑]Sa-Token 整合 Redis 报空指针异常:NullPointerException 详细解决方案与排错思路

报错部分涉及技术栈

Spring Boot、Sa-Token、Redis...

问题场景

问题场景: 在拦截器中操作 Redis 时,遇到空指针异常。

症状

1afde394e6b747f886d083b87c1d3c0b.png

报错信息如下:

java.lang.NullPointerException: Cannot invoke "com.zwt.common.core.utils.RedisUtil.del(String[])" because "this.redisUtil" is null

先说结论

5fe7e58765aa4ec39880b6b695308cfd.pngnew 的拦截器绕过了 Spring 注入的环节,导致 redisUtil 为空。

(让我看还有谁复制代码不报错就不看的 

    [○・`Д´・ ○]!!!!)

解决方案

在 GlobalCorsConfig 中通过 Spring 容器管理 CustomInterceptor,而不是手动 new。

adc92e9ec3524d23a004271654f70d5d.png

代码部分

@Override
public void addInterceptors(InterceptorRegistry registry) {
    // 通过 Spring 容器获取 CustomInterceptor 实例
    registry.addInterceptor(customInterceptor()).addPathPatterns("/**")
        .excludePathPatterns("/account/**");
    // 注册 Sa-Token 的路由拦截器
    registry.addInterceptor(saInterceptor()).addPathPatterns("/**")
        .excludePathPatterns("/account/**");
}

排错思路

1.通过在启动类上加 @PostConstruct 注解,确保不是依赖注入的问题。

@PostConstruct
public void checkRedisUtil() {
    System.out.println("主类RedisUtil 是否被注入: " + (redisUtil != null));
    redisUtil.set("test", "hello world");
}

0663495005d94a7489dac812d6500803.png

2.加注解调试,确认是否是依赖没引进或扫包问题。  

 e29edbaa4b2e40768b78a7e4312f8acd.png

最终成功解决~!

希望可以帮助到你^_^

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值