接續昨天的架構規劃,今天我們直接透過實戰程式碼,來看 Spring Boot 的三層式架構(Controller, Service, Repository)如何運作,以及如何引導 IDE 內的 AI Chat 生成規範代碼!
Controller 負責接收 HTTP 請求,並呼叫 Service 處理。
@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
public class UserController {
private final UserService service;
// 將帳號密碼傳入資料表中
@PostMapping("/post")
public User register(
@RequestParam("account") String account,
@RequestParam("password") String password
){
return service.register(account, password);
}
// 抓出所有使用者
@GetMapping("/getAll")
public List<User> allUser(){
return service.allUser();
}
}
核心業務邏輯(如對物件進行裝配、資料驗證)放在 Service 層,保持 Controller 的乾淨。
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
public User register(String account, String password) {
// 將帳號與密碼的值附在 user 上
var user = User.builder()
.account(account)
.password(password)
.build();
// 接著請資料訪問層將 user 存在資料表裡面
userRepository.save(user);
return user;
}
public List<User> allUser() {
// 向資料訪問層索取所有用戶訊息
var UserList = userRepository.findAllUser();
return UserList;
}
}
利用 Spring Data JPA,將資料庫的操作封裝在 Repository 介面中。
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u")
List<User> findAllUser();
}
當有了這樣清晰的三層架構後,未來你要新增功能時,就可以這樣下 Prompt:
「請依照我專案現有的三層式架構 (Controller, Service, Repository),幫我新增一個『修改使用者密碼』的 API 功能。請分別給出這三層對應的代碼片段。」
掌握了這套結構後,後端開發就不會再亂成一團,AI 也能成為極度聽話且高效率的開發神隊友!