@With 注释在 Play Java

@With annotation in Play Java

我不明白@With PlayJava中注释的意思。 我们在 Whosebug 中有 the same question 似乎是 Play1,而不是 Play2。 而在最新版本的Play文档中,我看到了这个例子。

@With(VerboseAction.class)
public Result verboseIndex() {
    return ok("It works!"); }

这是什么意思?上面的例子,带注解和不带注解有什么区别?

很明显@With是用来组合Actions的:

public class VerboseAction extends play.mvc.Action.Simple {
    public CompletionStage<Result> call(Http.Context ctx) {
        Logger.info("Calling action for {}", ctx);
        return delegate.call(ctx);
    }
}

您可以使用 @With 注释将操作方法​​提供的代码与另一个 play.mvc.Action 组合起来:

@With(VerboseAction.class)
public Result verboseIndex() {
    return ok("It works!");
}

所以,当verboseIndex被调用时,首先会调用VerboseAction的方法call。因此,在此示例中,首先 Logger.info 将写入一些信息消息,然后 ok 响应将完成。