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

时间:2012-02-20 22:12:08

标签: syntax annotations playframework

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

在Play框架网站中,写道:

  

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

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

2 个答案:

答案 0 :(得分:7)

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

你可以

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

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

答案 1 :(得分:6)

假设您有2个控制器:

  • A@Before或其他控制器操作注入注释,
  • B使用@With(A.class)
  • 进行注释

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

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