Spec-Zone .ru
спецификации, руководства, описания, API
|
|
|||||||||
ПРЕДЫДУЩИЙ КЛАСС СЛЕДУЮЩИЙ КЛАСС | ФРЕЙМЫ НИКАКИЕ ФРЕЙМЫ | ||||||||
СВОДКА: ТРЕБУЕМЫЙ | ДОПОЛНИТЕЛЬНЫЙ | ДЕТАЛЬ: ЭЛЕМЕНТ |
@Target(value=ANNOTATION_TYPE) @Retention(value=RUNTIME) @Documented public @interface Scope
Идентифицирует аннотации контекста. Аннотация контекста применяется к class, содержащему вводимого конструктора, и управляет как экземпляры повторных использований инжектора типа. По умолчанию, если никакая аннотация контекста не присутствует, инжектор создает экземпляр (вводя конструктора типа), использует экземпляр для одной инжекции, и затем забывает это. Если аннотация контекста присутствует, инжектор может сохранить экземпляр для возможного повторного использования в более поздней инжекции. Если многократные потоки могут получить доступ к определяющему контекст экземпляру, его реализация должна быть ориентирована на многопотоковое исполнение. Реализацию самого контекста оставляют до инжектора.
В следующем примере, аннотации контекста @Singleton
гарантирует, что у нас только есть один экземпляр Журнала:
@Singleton class Log { void log(String message) { ... } }
Инжектор генерирует ошибку, если он встречается больше чем с одной аннотацией контекста на тот же самый class или аннотацией контекста, он не поддерживает.
Аннотация контекста:
@Scope
, @Retention(RUNTIME)
, и обычно @Documented
.@Inherited
, так определение контекста является ортогональным к наследованию реализации.@Target
. В то время как эта спецификация покрывает применение контекстов к классам только, некоторые конфигурации инжектора могли бы использовать аннотации контекста в других местах (на результатах метода фабрики например).Например:
@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