@with注释究竟做了什么?(Play Framework)

jam*_*mes 7 syntax annotations playframework

我不太明白@with注释是做什么的.

在Play框架网站中,它写成:

我们可以使用@With注释来注释控制器,以告诉Play调用相应的拦截器

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

Cod*_*nci 7

我能描述它的最好方法是,它可以为您的拦截器提供控制器级别的多重继承.拦截器作为@Before,@After注释.

你可以这么做

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

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


Gel*_*Luo 6

假设您有2个控制器:

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

A在调用B动作方法时,定义的所有注入动作都将有效.

这是一种继承.但是对于继承,您最多可以扩展一个类.但你可以做到@With({A.class, Z.class, ...})