2

playframework 2 では、Java を使用している場合、コントローラー クラスにアクション合成アノテーションを直接配置できます。これは、playframework2 ドキュメントのアクション合成セクションに記載されているように、このコントローラーによって定義されたすべてのアクション メソッドに適用されます。

@With(MyLogger.class)
public Admin extends Controller {
    ..
}

Java のアノテーションで行われることは、Scala のヘルパー メソッド (デコレータ) で行われます。ただし、Scala では、playframework2 ドキュメントの唯一の例はメソッドごとです。

各アクションの前後にログを記録し、そのアクションの実行にかかる時間を測定するログ デコレータがあります。このデコレータをコントローラに追加して、Java のようにコントローラの各アクション メソッドに適用する方法はありますか?

それぞれのメソッドを LoggingAction でラップできることはわかっています。

def index = LoggingAction { request =>
  Ok("I have been logged")    
}

しかし、ログ アクションをプロジェクト全体のすべてのアクション メソッドに適用したい場合、これはかなり見苦しく思えます。

4

1 に答える 1