🕋
[Spring]アノテーション
アノテーションの例
| アノテーション | 説明 |
|---|---|
@Controller |
クラスをコントローラーとして定義 |
@GetMapping, @PostMapping, @PutMapping, @PatchMapping, @DeleteMapping
|
特定のHTTPメソッドを処理 |
@RequestParam |
クエリパラメータを取得 |
@PathVariable |
URLのパス変数を取得 |
@ModelAttribute |
リクエストデータをオブジェクトにバインド |
@Controller
@Controllerはクラスに付与して、そのクラスがWebリクエストを受け取るコントローラーであることを示します。戻り値は通常View名(HTMLなど)を返します。
@GetMapping
@GetMappingは、HTTP GETリクエストに対する処理を定義するアノテーションです。
@GetMapping("/users")
public String listUsers(Model model) {
return "userList";
}
@PostMapping
@PostMappingは、HTTP POSTリクエストに対する処理を定義するアノテーションです。
@PostMapping("/contact")
public String createPage(@RequestParam String title, Model model) {
model.addAttribute("title", title);
return "article_created";
}
@PutMapping
@PutMappingはHTTPのPUTリクエストにマッピングするアノテーションです。
主にリソース全体の更新(完全上書き)に使います。
全てのフィールドを受け取ることを想定しており、未指定の場合はnullで上書きされる可能性があります。
@PutMapping("/user/{id}")
public String updateUser(@PathVariable int id, @ModelAttribute User user) {
// データを更新するコード
}
@PatchMapping
@PatchMappingはHTTPのPATCHリクエストにマッピングするアノテーションです。
主にリソースの一部の更新に使用されます。
更新したいデータのみ送信し既存のデータから差し替えます。
@PatchMapping("/user/{id}")
public String patchUser(@PathVariable int id, @RequestParam("name") String name) {
// 指定されたnameだけを更新する
userService.updateName(id, name); // 名前を更新
//ユーザーの詳細ページ(/user/{id})にリダイレクトする。
//redirect: を付けると SpringがHTTPリダイレクトを行う。
return "redirect:/user/" + id;
}
@DeleteMapping
@DeleteMappingはHTTPのDELETEリクエストにマッピングするアノテーションです。
リソースの削除処理に使用します。
@DeleteMapping("/user/{id}")
public String deleteUser(@PathVariable int id) {
// IDでユーザーを削除するコード
}
@RequestParam
@RequestParamは、リクエストのクエリパラメータやフォームパラメータを取得するためのアノテーションです。
/search?keyword=springというURLが呼び出されたときに、keywordの値を取得できます。
@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword, Model model) {
model.addAttribute("keyword", keyword);
return "result";
}
以下のようにオプションを設定することも可能です。
-
required = false:パラメータが必須ではない場合 -
defaultValue = "default":パラメータが未指定時のデフォルト値
@GetMapping("/search")
public String search(
@RequestParam(name = "keyword", required = false) String keyword,
@RequestParam(name = "name", defaultValue = "spring") String name,
Model model
) {
model.addAttribute("keyword", keyword);
model.addAttribute("name", name);
return "result";
}
@PathVariable
@PathVariableは、URLの一部(パス)から変数を抽出するためのアノテーションです。
/user/5のようなURLで5を取得したい場合に使用します。
@GetMapping("/user/{id}")
public String userDetail(@PathVariable("id") int id, Model model) {
model.addAttribute("userId", id);
return "userDetail";
}
@ModelAttribute
@ModelAttributeは、フォームなどから送られてくる値をJavaオブジェクトに自動的にバインドするアノテーションです。
// User.java
public class User {
private String name;
private int age;
// ゲッター・セッター
}
// コントローラ
@PostMapping("/register")
public String register(@ModelAttribute User user) {
// 自動でリクエストパラメータ(name, age)をUserオブジェクトにマッピング
// 例: name=太郎&age=20 → user.setName("太郎"), user.setAge(20)
return "result";
}
Discussion