Ratpack入門シリーズ
- Ratpack入門 (1) - Ratpackとは
- Ratpack入門 (2) - アーキテクチャー
- Ratpack入門 (3) - hello world 詳解
- Ratpack入門 (4) - ルーティング & 静的コンテンツ
- Ratpack入門 (5) - Json & Registry
- Ratpack入門 (6) - Promise
- Ratpack入門 (7) - Guice & Spring
- Ratpack入門 (8) - セッション
- Ratpack入門 (9) - Thymeleaf
Ratpackのアーキテクチャー
ここではRatpackの主要なクラスの概略を解説していきます。随時追記予定。
RatpackServer
サーバーを起動するための基本的なクラスです。
ServerConfig
サーバーに関する設定(ポートなど)をまとめるクラスです。
Service
Ratpackサーバーのライフサイクルにおけるフックを提供するインターフェースです。
@Deprecated
されている同名インターフェースがあるので注意。
Registry
Handler間で情報の受け渡しに使用されるクラスです。
...こう書くとあまり重要でないように見えますが、サーバー自体もRegistry
を通して各依存関係を取得します(公式マニュアルではserver registry
)。
従って、Handler自身やRendererといった各機能は全てRegistryを通して取得されるので、Ratpackの柔軟性を支える大切なクラスです。
Google Guiceを使用した拡張が用意されています。
Action
設定などを行うための汎用の関数型インターフェースです。
例えばRatpackServer.start()
はAction<RatpackServerSpec>
を引数にとりますし、RatpackServerSpec.handlers()
はAction<Chain>
を引数に持ちます。
Chain
複数のハンドラーをひとまとめにするクラスです。
各ハンドラーのルーティングなども行います。
Handler
あるリクエストを受け取りレスポンスを返すことをモデル化した、handle(Context)
メソッドをもつ関数型インターフェースです。
イメージとしてはJava EEのHttpServlet
のようなものでしょうか。
渡されたContext
に処理を記述していくことで、レスポンスを作成していきます。
Context
各Handler
の呼び出しに伴う「文脈」を提供するクラスです。
HTTPリクエストなどの情報も、このオブジェクトが保持しています。
Context.render(Object)
を呼び出すことで、返却するレスポンスの中身が作成されます。
Promise
非同期処理をサポートするクラスです。JavaScriptのPromiseと同じようなもの。詳細解説記事を作成予定。
Operation
Promise
の値を返却しないバージョンです。
Blocking
Promise
やOperation
を作成するためのユーティリティークラスです。ブロッキングIOをするときに使用します。
Session
ratpack-session
が必要です。Ratpackの通信でセッションをサポートするためのクラスです。
Registry.get()
から取得します。
BaseDir
静的アセットを提供するのに使用するクラスです。