Spec-Zone .ru
спецификации, руководства, описания, API


javax.inject
Контекст Типа аннотации


@Target(value=ANNOTATION_TYPE)
@Retention(value=RUNTIME)
@Documented
public @interface Scope

Идентифицирует аннотации контекста. Аннотация контекста применяется к class, содержащему вводимого конструктора, и управляет как экземпляры повторных использований инжектора типа. По умолчанию, если никакая аннотация контекста не присутствует, инжектор создает экземпляр (вводя конструктора типа), использует экземпляр для одной инжекции, и затем забывает это. Если аннотация контекста присутствует, инжектор может сохранить экземпляр для возможного повторного использования в более поздней инжекции. Если многократные потоки могут получить доступ к определяющему контекст экземпляру, его реализация должна быть ориентирована на многопотоковое исполнение. Реализацию самого контекста оставляют до инжектора.

В следующем примере, аннотации контекста @Singleton гарантирует, что у нас только есть один экземпляр Журнала:

   @Singleton
   class Log {
     void log(String message) { ... }
   }

Инжектор генерирует ошибку, если он встречается больше чем с одной аннотацией контекста на тот же самый class или аннотацией контекста, он не поддерживает.

Аннотация контекста:

Например:

   @java.lang.annotation.Documented
   @java.lang.annotation.Retention(RUNTIME)
   @javax.inject.Scope
   public @interface RequestScoped {}

Аннотирование аннотаций контекста с @Scope помогает инжектору обнаружить случай, где программист, используемый аннотация контекста на class, но, забыл конфигурировать контекст в инжекторе. Консервативный инжектор генерировал бы ошибку, а не не применил бы контекст.

См. Также:
@Singleton



Представьте ошибку или функцию

Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается срокам действия лицензии.

Сгенерированный на 10-February-2011 12:41

free hit counter