【问题标题】:what exactly does the @with annotation do? (Play Framework)@with 注释到底是做什么的? (播放框架)
【发布时间】:2012-02-20 22:12:07
【问题描述】:

我不太明白@with 注释的作用。

在 Play framework 站点中,它是这样写的:

我们可以使用@With注解来注解控制器 播放调用相应的拦截器

它和继承一样吗?它会调用给定类参数的@before 吗?它到底是做什么的?

【问题讨论】:

    标签: syntax annotations playframework


    【解决方案1】:

    我能描述它的最好方式是,它在你的控制器级别为你的拦截器提供了多重继承。拦截器是@Before@After 注解。

    因此你可以

    • 定义一个控制器来处理你的安全区域@Before注解
    • 定义一个控制器来处理使用@Before为共享操作注入静态数据

    然后您可以定义一个或多个控制器来包含您的所有操作,并使用@With 注释来使用上述两个控制器。这意味着您可以干净地分离代码,而不必依赖继承来执行@Before 注释。

    【讨论】:

      【解决方案2】:

      假设你有 2 个控制器:

      • A@Before 或其他控制器动作注入注解,
      • B 得到注释 @With(A.class)

      所有在A 中定义的注入动作将在调用B 的动作方法时生效。

      这是一种继承。但是,通过继承,您最多可以扩展一个类。不过你可以@With({A.class, Z.class, ...})

      【讨论】:

      • 如果我理解正确,在 B 类中我可以调用 A 类中的任何方法(隐式)?
      • 不,只有拦截器((at)Before、(at)After、(at)Final 等)会起作用
      猜你喜欢
      • 2021-01-29
      • 2011-11-19
      • 1970-01-01
      • 2021-08-29
      • 2015-08-06
      • 2013-09-02
      • 2014-01-02
      • 2013-10-10
      • 2017-05-08
      相关资源
      最近更新 更多