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


Пакет javax.enterprise.inject

Аннотации, касающиеся боба и стереотипного определения, встроенных спецификаторов, и интерфейсов и классов, касающихся программируемого поиска.

См.:
          Описание

Сводка интерфейса
Экземпляр <T> Позволяет приложению динамически получать экземпляры бобов с указанной комбинацией необходимого типа и спецификаторов.
 

Сводка исключения
AmbiguousResolutionException Указывает, что многократные бобы соответствуют определенную комбинацию необходимого типа и требуемых спецификаторов и имеют право на инжекцию в определенный class.
CreationException Указывает, что проверенное исключение было выдано во время создания боба.
IllegalProductException Указывает, что метод производителя, возвращенный нулевое значение или поле производителя, содержавшее нулевое значение, и контекст метода производителя или поля, не был Dependent.
InjectionException Указывает на проблему, касающуюся внедрения зависимости.
ResolutionException Указывает на проблему, касающуюся безопасного с точки зрения типов разрешения.
UnproxyableResolutionException Указывает, что контекстная ссылка для боба с нормальным контекстом и определенным бобовым типом не может быть получена, потому что бобовый тип не может быть проксирован контейнером.
UnsatisfiedResolutionException Указывает, что никакой боб не соответствует определенную комбинацию необходимого типа и требуемых спецификаторов и имеет право на инжекцию в определенный class.
 

Аннотация Вводит Сводку
Альтернатива Определяет, что боб является альтернативой.
Любой Встроенный тип спецификатора.
Значение по умолчанию Тип спецификатора значения по умолчанию.
Располагает Идентифицирует склонный параметр метода устройства обработки отходов.
Модель Встроенный стереотип, предназначенный для использования с бобами, которые определяют уровень модели архитектуры веб-приложения MVC, такой как JSF.
Новый Встроенный тип спецификатора.
Производит Идентифицирует метод производителя или поле.
Специализируется Указывает, что боб непосредственно специализирует другой боб.
Стереотип Определяет, что тип аннотации является стереотипом.
Введенный Ограничивает бобовые типы боба.
 

Пакет javax.enterprise.inject Описание

Аннотации, касающиеся боба и стереотипного определения, встроенных спецификаторов, и интерфейсов и классов, касающихся программируемого поиска.

Боб является источником контекстных объектов, которые определяют состояние приложения и/или логику. Эти объекты вызывают контекстными экземплярами боба. Контейнер создает и уничтожает эти экземпляры и связывает их с соответствующим контекстом. Контекстные экземпляры боба могут быть введены в другие объекты (включая другие бобовые экземпляры), которые выполняются в том же самом контексте, и могут использоваться в Объединенных ЭЛЬ выражениях, которые оцениваются в том же самом контексте.

Жизненным циклом контекстных экземпляров управляет контейнер согласно модели контекстов жизненного цикла. Аннотации определяют жизненный цикл боба и его взаимодействий с другими бобами.

Боб включает следующие атрибуты:

Бобовые типы

Бобовый тип является видимым клиентом типом боба. У боба могут быть многократные бобовые типы. У следующего боба есть бобовые типы BookShop, Business, Shop<Book> и Object.

 public class BookShop 
       extends Business 
       implements Shop<Book> { 
    ... 
 } 
 

Почти любой тип Java может быть бобовым типом боба:

  • Бобовый тип может быть интерфейсом, конкретным class или абстрактным class, и может быть объявлен финалом или иметь заключительные методы.
  • Бобовый тип может быть параметризованным типом с фактическими параметрами типа и ввести переменные.
  • Бобовый тип может быть типом массива. Два типа массива считают идентичными, только если тип элемента идентичен.
  • Бобовый тип может быть типом примитива. Типы примитивов, как полагают, идентичны их соответствующей обертке, вводит java.lang.
  • Бобовый тип может быть необработанным типом.
  • Переменная типа не является юридическим бобовым типом. Параметризованный тип, который содержит подстановочный параметр типа, не является юридическим бобовым типом.

    Бобовые типы боба определяются автоматически. Однако, набор бобовых типов может быть resticted использование @Typed аннотация.

    Спецификаторы

    Спецификатор представляет некоторых видимых клиентом семантический связанный с типом, который удовлетворяется некоторыми реализациями типа (а не другими). Спецификаторы применяются к инжекционным точкам, чтобы различить, какая реализация требуется клиентом.

     @Inject @Synchronous PaymentProcessor paymentProcessor; 
     

    Тип спецификатора является аннотируемой аннотацией Java @Qualifier. Спецификаторы боба объявляются, аннотируя боб class или метод производителя или поле с типами спецификатора.

     @Synchronous @Reliable 
     class SynchronousReliablePaymentProcessor 
           implements PaymentProcessor { 
        ... 
     } 
     

    Если боб явно не объявляет спецификатор кроме @Named, у боба есть спецификатор @Default.

    Контекст

    У всех бобов есть контекст. Контекст боба определяет жизненный цикл своих экземпляров, и какие экземпляры боба видимы к экземплярам других бобов.

    Тип контекста является аннотируемой аннотацией Java @Scope или @NormalScope. Контекст боба определяется, аннотируя боб class или метод производителя или поле с типом контекста или со стереотипом, который объявляет контекст значения по умолчанию.

     @ConversationScoped 
     public class Order { ... } 
     

    Боб class или метод производителя или поле может определить самое большее одну аннотацию типа контекста.

    Если боб явно не объявляет контекст или стереотип с контекстом значения по умолчанию, значениями по умолчанию контекста к @Dependent.

    Боб ЭЛЬ имя

    У боба может быть боб ЭЛЬ имя. Боб с ЭЛЬ именем может быть упомянут его именем в Объединенных ЭЛЬ выражениях. Допустимый боб ЭЛЬ имя является разделенным от периода списком допустимых ЭЛЬ идентификаторов.

    Определить ЭЛЬ имя боба, спецификатора @Named применяется к бобу class или метод производителя или поле.

     @Named("currentOrder") 
     public class Order { ... } 
     
    Если аннотация @Named не определяет value элемент, ЭЛЬ имя принимается значение по умолчанию.

    Привязка перехватчика

    Перехватчики могут быть связаны с любым управляемым бобом, который не является самостоятельно перехватчиком или декоратором или к любому сеансу EJB или управляемому сообщением бобу. Перехватчик, который аннотируется @Interceptor может быть идентифицирован его привязкой перехватчика.

     @Transactional @Interceptor
     public class TransactionInterceptor {
        @AroundInvoke 
        public Object manageTransaction(InvocationContext ctx) { ... }
     }
     

    Тип привязки перехватчика является аннотируемой аннотацией Java @InterceptorBinding. Привязка перехватчика боба может быть объявлена, аннотируя боб class, или метод боба class, с типом привязки перехватчика или со стереотипом, который объявляет привязку перехватчика.

    В следующем примере TransactionInterceptor будет применен на уровне class, и поэтому применяется ко всем бизнес-методам class:

     @Transactional 
     public class ShoppingCart { ... }
     

    В этом примере TransactionInterceptor будет применен на уровне метода:

     public class ShoppingCart { 
        @Transactional 
        public void placeOrder() { ... } 
     } 
     

    Если управляемый боб, class объявляется финалом, у него, возможно, нет никакой привязки перехватчика. Если у управляемого боба есть нестатический, нечастный, заключительный метод, у него, возможно, нет никакого class уровень привязка перехватчика, и у того метода, возможно, нет никакой привязки перехватчика на уровне метода.

    Бобовая реализация

    Контейнер оказывает встроенную поддержку для инжекционного и контекстного управления жизненным циклом следующих видов боба:

    Управляемые бобы

    Управляемый боб является бобом, который реализуется Java class. Основной жизненный цикл и семантика управляемых бобов определяются Управляемой Бобовой спецификацией.

    Высокоуровневый class Java является управляемым бобом, если он определяется, чтобы быть управляемым бобом какой-либо другой спецификацией EE Java, или если он встречает все следующие условия:

    Все классы Java, которые удовлетворяют этим условиям, являются управляемыми бобами, и таким образом никакое специальное объявление не обязано определять управляемый боб. Дополнительно, управляемый боб может быть аннотирован ManagedBean.

    Если у управляемого боба есть общедоступное поле, у него должен быть контекст @Dependent.

    Если управляемый боб, class является универсальным типом, у него должен быть контекст @Dependent.

    Бобы сеанса

    Основной жизненный цикл и семантика бобов сеанса EJB определяются спецификацией EJB.

    Если боб сеанса, class является универсальным типом, у него должен быть контекст @Dependent.

    Если боб сеанса является stateful бобом сеанса:

    Методы производителя и поля

    Метод производителя или поле действуют как источник объектов, которые будут введены, где:

    Метод производителя или поле являются методом или полем боба аннотируемый class @Produces.

    Общий образец в универсальном коде является методом производителя, который вводит InjectionPoint объект.

    Ресурсы

    Ресурс является бобом, который представляет ссылку на ресурс, контекст персистентности, модуль персистентности, удаленный EJB или веб-сервис в компонентной среде EE Java.

    Ресурс может быть объявлен, определяя компонентную аннотацию инжекции среды EE Java как часть полевого объявления производителя.

    Инжекционная аннотация определяет, что метаданные должны были получить ресурсы, менеджера по объекту, менеджера по объекту фабрика, отдалить экземпляр EJB или ссылку веб-сервиса от компонентной среды.

     @Produces @WebServiceRef(lookup="java:app/service/PaymentService")
     PaymentService paymentService;
     
     @Produces @EJB(ejbLink="../their.jar#PaymentService")
     PaymentService paymentService;
     
     @Produces @Resource(lookup="java:global/env/jdbc/CustomerDatasource")
     @CustomerDatabase Datasource customerDatabase;
     
     @Produces @PersistenceContext(unitName="CustomerDatabase")
     @CustomerDatabase EntityManager customerDatabasePersistenceContext;
     
     @Produces @PersistenceUnit(unitName="CustomerDatabase")
     @CustomerDatabase EntityManagerFactory customerDatabasePersistenceUnit;
     

    У ресурса, возможно, нет ЭЛЬ имени.

    Включенный и отключенные бобы

    Боб, как говорят, включается если:

    Иначе, боб, как говорят, отключается.

    Межмодульная инжекция

    Бобы и их клиенты могут быть развернуты в модулях в архитектуре модуля, таких как среда EE Java. В архитектуре модуля определенные модули считают бобовыми архивами. В архитектуре модуля EE Java, любом модуле EE Java или библиотеке модуль. Модуль EE Java или библиотека являются бобовым архивом, если это содержит файл beans.xml в каталоге метаданных.

    Боб доступен для инжекции в определенном модуле если:

    Инжекционные точки

    Следующие виды инжекционной точки существуют:

    Внедрение зависимости

    Боб присваиваем данной инжекционной точке если:

    Боб имеет право на инжекцию в данную инжекционную точку если:

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

    Определенные юридические бобовые типы не могут быть проксированы контейнером:

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

    ЭЛЬ разрешение имени

    ЭЛЬ имена разрешаются когда Объединено оцениваются, ЭЛЬ выражения. ЭЛЬ имя решает к бобу если:

    Если ЭЛЬ имя решает больше чем к одному бобу, контейнер пытается разрешить неоднозначность, устраняя все бобы, которые не являются альтернативами, за исключением методов производителя и полей бобов, которые являются альтернативами.

    Включенные перехватчики

    По умолчанию у бобового архива нет никаких включенных перехватчиков. Перехватчик должен быть явно включен, перечисляя его боб class под элементом <interceptors> файла beans.xml бобового архива. Порядок объявлений перехватчика определяет упорядочивание перехватчика. Перехватчики, которые происходят ранее в списке, вызывают сначала.

    Перехватчик связывается с бобом если:

    Экземпляр перехватчика является зависимым объектом объекта, который он прерывает.

    См. Также:
    javax.enterprise.context, javax.inject, javax.interceptor, javax.decorator, javax.enterprise.event, Produces, Alternative


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

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

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

    free hit counter