You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中JwtUtil注入失败引发NullPointerException问题求助

JwtUtil依赖注入失败导致空指针异常的排查与解决

问题描述

出现空指针异常:

java.lang.NullPointerException: Cannot invoke "com.example.cafe.JWT.JwtUtil.extractUsername(String)" because "this.jwtUtil" is null

明确为UserServiceImpl类中的jwtUtil字段未被Spring正确注入。

可能的原因及对应解决方法

1. 类注解位置错误

从提供的UserServiceImpl代码来看,@Service和@Slf4j注解放在了成员字段下方,而非类定义的顶部。Spring需要通过类上的@Service注解识别该类为可管理的Bean,注解位置错误会导致Spring无法扫描并创建该Bean,自然无法完成依赖注入。

修正示例:

@Service
@Slf4j
public class UserServiceImpl {
    @Autowired
    private JwtUtil jwtUtil;
    @Autowired
    private JwtFilter jwtFilter;

    public ResponseEntity<String> login(Map<String, String> requestMap) {
        // 方法实现...
    }
}

2. 构造函数注入冲突(JwtUtil使用@RequiredArgsConstructor)

JwtUtil类添加了@RequiredArgsConstructor注解,该注解会自动生成包含所有final成员字段的构造函数。如果JwtUtil中存在未被初始化的final字段,或者Spring无法正确解析构造函数参数,会导致JwtUtil的Bean创建失败,进而影响UserServiceImpl的注入。

解决方法:

  • 确保JwtUtil的@Service注解位于类顶部,且所有final字段都能被Spring正确注入;
  • 推荐UserServiceImpl改用构造函数注入(更符合Spring最佳实践),示例:
@Service
@Slf4j
public class UserServiceImpl {
    private final JwtUtil jwtUtil;
    private final JwtFilter jwtFilter;

    // 构造函数注入,Spring 4.3+无需@Autowired
    public UserServiceImpl(JwtUtil jwtUtil, JwtFilter jwtFilter) {
        this.jwtUtil = jwtUtil;
        this.jwtFilter = jwtFilter;
    }

    // 方法实现...
}

3. Spring组件扫描范围未覆盖目标类

如果UserServiceImpl或JwtUtil所在的包不在Spring的组件扫描范围内,Spring无法发现并创建这些Bean,导致注入失败。

解决方法:

  • 检查类的包结构,确保它们位于主启动类所在包或其子包下(Spring默认扫描主启动类所在包);
  • 若包结构特殊,可在主启动类上添加@ComponentScan指定扫描范围,示例:
@SpringBootApplication
@ComponentScan(basePackages = {"com.example.cafe", "com.example.cafe.JWT"})
public class CafeApplication {
    public static void main(String[] args) {
        SpringApplication.run(CafeApplication.class, args);
    }
}

4. 手动实例化UserServiceImpl导致注入失效

如果代码中通过new UserServiceImpl()手动创建实例,而非通过Spring容器获取(如@Autowired注入UserServiceImpl),Spring不会对该实例进行依赖注入,jwtUtil字段会保持为空。

解决方法:
确保所有使用UserServiceImpl的场景都通过Spring依赖注入获取实例,禁止手动new创建。


内容的提问来源于stack exchange,提问作者zouhour kharrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 06:33:24