iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
Vibe Coding

人機協同程式開發實戰:用 AI 輔助開發 Swift 與 Spring Boot,打造屬於自己的程式系列 第 9 篇

Day 9 — Spring Boot AI 提示詞心法:打造高品質後端架構的下指令眉角

  • 分享至 

  • xImage
  •  

昨天我們介紹了如何利用 AI 建立 Spring Boot 的三層式架構。然而,在實際讓 AI 撰寫 Spring Boot 後端程式碼時,如果提示詞(Prompt)給得太隨意,很容易產生安全性漏洞、過時的 API 寫法,或是違反物件導向與 Spring 核心設計原則的程式碼。

今天我們就來整理在撰寫 Spring Boot API 與業務邏輯時,下達 Prompt 必須牢記的四大注意事項與實務眉角!


1. 明確指定 Spring Boot 與 Java 版本規範

Spring Boot 2 與 Spring Boot 3(以及 Java 8 與 Java 17/21)在語法與套件依賴上有不小的差異(例如:javax.* 遷移至 jakarta.*)。若未指定版本,AI 經常會混用舊版的套件,導致專案編譯失敗。

  • 提示詞技巧:在 Prompt 開頭即劃定技術棧版本。
  • 實戰寫法:「請使用 Java 17 與 Spring Boot 3.x 規範撰寫代碼,所有 Persistence 套件請統一使用 jakarta.persistence.*。」

2. 強制遵循三層式架構與 Lombok 語法規範

為了保持後端專案的乾淨度,必須限制 AI 產出的程式碼職責。同時,要求 AI 搭配 Lombok 註解(如 @RequiredArgsConstructor)來進行依賴注入(Dependency Injection),避免產生冗長的 Constructor 程式碼。

  • 提示詞技巧:限制 AI 不得在 Controller 中撰寫資料庫操作,且不使用 @Autowired 欄位注入(Field Injection)。
  • 實戰寫法:「請嚴格遵守 Controller - Service - Repository 三層架構。Controller 只負責處理 HTTP 請求,業務邏輯必須寫在 Service。依賴注入請使用 Lombok 的 @RequiredArgsConstructor 加 private final 欄位,勿使用 @Autowired。」

3. 要求標準化的 API 回傳格式與例外處理(Exception Handling)

後端 API 若直接回傳原始 Entity,不僅容易暴露敏感資料,還會在發生錯誤時傳回雜亂的 Stack Trace。下指令時應要求 AI 使用統一的包裝類別(如 ResponseEntity 或自訂的 ApiResponse<T>),並加上基本的防呆驗證。

💡 實戰 Prompt 範例:

「請幫我撰寫 UserService.java 中的『更新使用者資料』方法。
規範需求:

  1. 輸入參數需進行防呆檢查(如檢查使用者是否存在)。
  2. 若使用者不存在,請拋出自訂的 ResourceNotFoundException,而不是直接回傳 null。
  3. API 回傳值請統一使用 ResponseEntity<ApiResponse<UserDto>> 進行包裝。」

4. 資料庫安全與 JPA 查詢效率提醒

AI 在生成 JPA 查詢或 SQL 時,有時會寫出容易引發 N+1 查詢問題 的程式碼,或忘記對敏感欄位(如密碼)進行加密處理。

  • 提示詞技巧:
    • 安全性:「處理密碼時,請使用 Spring Security 的 PasswordEncoder(如 BCrypt)進行加密儲存。」
    • 效能:「若涉及到關聯查詢(如 User 與 Role),請在 JPA Query 中使用 JOIN FETCH 以避免 N+1 效能問題。」

掌握了這四大針對 Spring Boot 的 Prompt 下指令心法,就能確保 AI 生成的後端代碼既符合企業級規範,又具備良好的安全性與維護性!


上一篇
Day 8 — 後端三層式架構實戰:Controller、Service 與 Repository 的 AI 協作
下一篇
Day 10 — AI 神隊友 Codex 登場:基於 大語言模型 的開發利器
系列文
人機協同程式開發實戰:用 AI 輔助開發 Swift 與 Spring Boot,打造屬於自己的程式 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言