Spring の場合:Controller とハンドラーメソッド
今回のレクチャーでは、Spring Boot での Web アプリケーション開発で何をコーディングする必要があるのかについて説明します。 Web アプリケーションは、クライアントから受け取ったリクエストに対するレスポンスをサーバーが返すことで実現しています。 「Web アプリケーションを作る」というのは、このサーバーの処理を書くということです。
Spring では Controller クラスにハンドラーメソッドを実装してリクエストからレスポンスを生成する処理を書きます。 それぞれがどのようなものか見ていきましょう。
目次
Controller とハンドラーメソッド
HTTP リクエストを受けて HTTP レスポンスを生成する処理は、Spring では Java のメソッドに記述します。 リクエストを受け付ける Java のメソッドのことを、Spring では特別に「ハンドラーメソッド」と呼びます。 リクエストを handle する(扱う)メソッドという意味です。
ハンドラーメソッドを持つクラスを Controller クラスと呼びます。 Spring フレームワークを使う開発では、ハンドラーメソッドを特定のリクエストと紐付けておくことで Web アプリケーションの動作を実現していきます。
Controller のコード例
具体的なコード例を見て理解を深めましょう。
次のコードは Controller とハンドラーメソッドの例です。
ここでは、GET /hello
というリクエストを処理する sayHello
メソッドを記述しています。
このメソッドは HelloController
クラスのメソッドとして定義されています。
@Controller
public class HelloController {
@GetMapping("/hello")
@ResponseBody
public String sayHello() {
return "Hello, World!";
}
}
コードのポイントは2つです:
@Controller
アノテーション
Controller クラスには、@Controller
アノテーションをつけます。
これにより、Spring がこのクラスを Controller クラスとして認識するようになります。
自作した Controller クラスは Spring にその存在を伝えなければ Web アプリケーションに組み込まれません。
Controller クラスには @Controller アノテーションを忘れずに付ける必要があります。
@GetMapping
アノテーション
ハンドラーメソッドにはどのようなリクエストを処理対象とするかを示すアノテーションをつけます。
引数には、ハンドラーメソッドに処理させたい URL を記述します。
たとえば @GetMapping("/hello")
は、GET /hello
というリクエストを処理するハンドラーメソッドであることを意味しています。
付与するアノテーションは、処理したいHTTPメソッドの種類に応じて使い分けます:
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
まとめ:Spring でのコーディングはハンドラーメソッドを書く作業
このレクチャーでは、Spring で Web アプリケーションを実装するときの具体的な作業について説明しました。 「Web アプリケーションを作る」と聞くと難しく感じるかもしれませんが、本質的には、
- ハンドラーメソッドでレスポンスを生成する処理を書く
- リクエストとハンドラーメソッドを紐付ける
の2つを繰り返すことになります。
ここでもやはりアノテーションがいくつか出てきました。 今すべてを暗記する必要はありませんので、少しずつ使い慣れていきましょう。