Spring 2.5 引入完整註解體系,替代龐大 XML 配置。@Controller、@Autowired 搭配 <context:component-scan> 即可自動發現組件與注入依賴,大幅精簡 Web 層配置。
傳統 Controller 介面強制單一方法簽名 handleRequest(req, res)。@MVC 帶來三大變革:
HttpServletRequest、Map、@RequestParam 等;返回值可為 ModelAndView、String、void 等。@Controller
@RequestMapping("/accounts/*")
public class AccountsController {
@Autowired
public AccountsController(AccountRepository repo) { ... }
@RequestMapping(method = RequestMethod.GET)
public void show(@RequestParam("number") String number, Map<String, Object> model) {
model.put("account", repo.findAccount(number));
// 視圖名由慣例解析:accounts/show
}
}
@RequestParam(value="number", required=false) String number
@RequestParam("id") Long id
@RequestParam("balance") double balance
自動處理類型轉換、必填/選填驗證,支援自定義 PropertyEditor。
formBackingObject)。SessionStatus.setComplete() 清理。@RequestMapping(method = RequestMethod.POST)
public ModelAndView onSubmit(Account account, BindingResult result) {
validator.validate(account, result);
if (result.hasErrors()) {
return new ModelAndView(); // 回顯表單並攜帶錯誤
}
// 保存並重導向
}
BindingResult 收集綁定與驗證錯誤,配合慣例視圖解析,代碼極度精簡。
@ModelAttribute 方法級預備數據,簡化表單流程。Spring 2.5 @MVC 不只是 XML 替代品,更賦予 Controller 技術下一階段演進:非侵入、多方法、靈活簽名、慣例優先。強烈推薦遷移至註解驅動模型,享受精簡、強大的 Web 開發體驗。