首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java NullPointerException 排查:Service 層未注入導致 userService 為 null

     編輯:程式設計綜合問答

異常現場

登錄操作拋出 NPE,堆棧指向第 55 行(截圖不可見)。

90% 概率原因

Service Bean 未被 Spring 容器管理/注入失敗:

  • 類上缺少 @Service / @Component 注解
  • 包掃描路徑未覆蓋 Service 所在包
  • 構造器/Setter 注入參數類型不匹配
  • 循環依賴導致提前暴露未初始化 Bean

排查步驟

  1. 檢查 UserService 類註解:@Service 或 @Component
  2. 檢查啟動類掃描:@ComponentScan("com.example.service")
  3. 控制器注入方式:
    @Autowired private UserService userService; (字段注入)
    或構造器注入(推薦)
  4. 啟動項目觀察控制台:是否有 Creating bean with name 'userService' 日志

快速驗證

// 在 Controller 構造器/方法中打印
System.out.println("userService = " + userService); // null 即未注入

最佳實踐

  • 優先構造器注入:不可變、最終一致性、易測試
  • 啟用 spring.main.allow-circular-references=false 禁止循環依賴
  • 使用 @RequiredArgsConstructor (Lombok) 自動生成構造器

NPE 現場第 55 行極大概率是 userService 調用處。Spring 注入失敗不報錯、運行時才 NPE,是新手最常踩的坑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved