2012-02-20 17 views
7

No entiendo muy bien lo que hace la anotación @with.¿qué hace exactamente la anotación @with? (Play Framework)

en el sitio de Juego marco, está escrito:

podemos anotar los controladores utilizando la anotación @With para contar Juego para invocar a los interceptores correspondientes

es lo mismo que herencia ? ¿invocará @antes del parámetro de clase dado? Qué hace exactamente ?

Respuesta

7

La mejor manera en que puedo describirlo, es que le da una herencia múltiple en su nivel de controlador para sus interceptores. Los interceptores son las anotaciones @Before, @After.

Se podría, por tanto,

  • definir un controlador que tratan con su área segura @Before anotaciones
  • definir un controlador que se ocupa de la inyección de los datos estáticos de acciones compartidas usando @Before

usted podría luego defina un controlador o controladores que contengan todas sus acciones, y use la anotación @With para hacer uso de los dos controladores descritos anteriormente. Significa que puede separar su código de forma limpia y no tener que depender de la herencia para ejecutar las anotaciones @Before.

6

Suponga que tiene 2 controladores:

  • A ha @Before u otras anotaciones de inyección de acción del controlador,
  • B conseguir anotado con @With(A.class)

Todas esas acciones de inyección definidos en A serán efectivas al llamar a los métodos de acción B.

Es una especie de herencia. Sin embargo, con la herencia puede extender como máximo una clase. Pero puede hacerlo @With({A.class, Z.class, ...})

+0

Si lo entiendo correctamente, en la clase B, ¿puedo llamar a cualquier método que esté en la clase A (implícitamente)? – james

+0

No, solo los interceptadores ((a) Antes, (a) Después, (a) Final, etc.) funcionarán –

Cuestiones relacionadas