что именно делает аннотация @with? (Play Framework) - PullRequest
7 голосов
/ 21 февраля 2012

Я не совсем понимаю, что делает аннотация @with.

на сайте Play Framework написано:

мы можем комментировать контроллеры с помощью @Withаннотация для указания Play вызвать соответствующие перехватчики

это то же самое, что наследование?это вызовет @ перед данным параметром класса?что именно это делает?

Ответы [ 2 ]

7 голосов
/ 21 февраля 2012

Лучший способ, которым я могу описать это, это то, что это дает вам множественное наследование на уровне вашего контроллера для ваших перехватчиков. Перехватчиками являются аннотации @Before, @After.

Вы могли бы поэтому

  • определить контроллер, который имел дело с вашей защищенной областью @Before аннотации
  • определить контроллер, который имел дело с введением ваших статических данных для общих действий, используя @Before

затем вы можете определить контроллер или контроллеры, которые содержат все ваши действия, и использовать аннотацию @With, чтобы использовать два контроллера, описанных выше. Это означает, что вы можете четко отделить свой код и не полагаться на наследование для выполнения аннотаций @Before.

6 голосов
/ 21 февраля 2012

Предположим, у вас есть 2 контроллера:

  • A имеет @Before или другие аннотации инъекций действия контроллера,
  • B получить пометку @With(A.class)

Все эти действия внедрения, определенные в A, будут эффективны при вызове методов действия B.

Это своего рода наследство. Однако с наследованием вы можете расширить не более одного класса. Но вы можете сделать @With({A.class, Z.class, ...})

...