LoginSignup
11
11

More than 5 years have passed since last update.

Java PlayFramework2.xで事前処理を行うアノテーション

Last updated at Posted at 2015-07-30

アクションに事前処理をつけたい

Play Framework(Java)で用意されているアノテーションの中に、
Controllerクラスやそのアクションを行うメソッドに付加しておくことで
事前処理を簡単に行う事ができるものが用意されています。
ユースケースとしては、

  • ログイン状態のチェック
  • ユーザ毎アクセス権限のチェック

などが挙げられます。

事前処理の実装

BeforeAction.java
public class BeforeAction extends play.mvc.Action.Simple {
    @Override
    public F.Promise<Result> call(Http.Context ctx) throws Throwable {

        System.out.println("事前処理を行います。");

        return delegate.call(ctx);
    }
}

callメソッドはアノテーションを付与したActionの直前に必ず呼ばれます。
ここで、必ずPromise型を返却する必要があります。

BeforeActionplay.mvc.Action.Simpleを継承しているので、
Action型のメンバ変数であるdelegateのcallメソッドを呼び、
Promiseを返却する事でもとのActionの処理をそのまま呼び出す事が可能です。

事前処理を行うメソッドにアノテーションを付与

@Withというアノテーションを付与する事で、
そのクラスまたはメソッドに事前処理を挟み込む事ができます。

以下のように記述する事で、上で実装したBeforeAction#callの処理を
事前処理として行います。

コントローラ
@With(BeforeAction.class) //これ
public static Result index() {
    System.out.println("indexメソッドが呼ばれました。");
    return ok("hello");
}
標準出力
事前処理を行います。
indexメソッドが呼ばれました。

まとめ

Withアノテーションとplay.mvc.Action.Simpleを継承したクラスを駆使する事で、
それぞれのアクションに対しログインなどの認証チェックや事前処理を簡単に挟み込む事ができます。

Withアノテーションには複数の事前処理を定義する事もできるので
うまく利用してPlayFrameworkでの開発を便利に・加速させましょう。

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11