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

Spring Boot POST 請求進入 Service 報錯:新增介面除錯無法進入斷點排查

     編輯:程式設計疑難解答

問題現象

其他 Service 正常,新增介面呼叫對應 Service 時拋出異常,Debug 模式斷點無法命中,疑似代碼未執行或類未載入。

常見原因排查清單

  1. 編譯未生效:修改代碼後未重新編譯/熱部署失效。
    → 執行 mvn clean compile 或 IDE Build → Rebuild Project。
  2. 元件掃描遺漏:新 Service 類缺少 @Service/@Component,或包路徑不在 @ComponentScan 範圍內。
    → 檢查主啟動類 @SpringBootApplication 所在包是否為父包。
  3. 依賴注入失敗:建構子/Setter/Field 注入的 Bean 不存在 (循環依賴、缺少 @Autowired)。
    → 啟動日志搜尋 UnsatisfiedDependencyException。
  4. AOP/代理問題:介面/類被代理,斷點需打在實現類方法內部,而非介面宣告處。
  5. 事務/異常吞噬:@Transactional 回滾拋出異常被全域異常處理器捕獲並返回錯誤碼,控制台無堆疊。
    → 檢查 @ControllerAdvice 全域異常處理邏輯。
  6. 請求映射衝突:多個 @PostMapping 路徑相同,Spring 隨機選一個執行。
  7. 緩存/DevTools 干擾:關閉瀏覽器緩存、重啟 IDE、停用 DevTools 重試。

最小化復現步驟

// 1. 確認 Controller 收到請求
@PostMapping("/new")
public Result newApi(@RequestBody Req req) {
    log.info("Controller entered: {}", req); // 打印日志
    return service.process(req);
}

// 2. Service 實現
@Service
public class NewService {
    public Result process(Req req) {
        log.info("Service entered"); // 打印日志
        // 業務邏輯
        return Result.ok();
    }
}

觀察日志輸出順序,定位斷點失效具體環節。

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