🕋
[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