Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Инъецирование зависимости

Инъецирование зависимостей позволяет превращать обычные классы Java в Managed-бины и инъецировать их в любой другой Managed-бин. Используя инъецирование зависимостей, ваш код может декларировать зависимости от любого Managed-бина. Контейнер автоматически предоставляет объекты этих зависимостей в точках инъецирования во время выполнения, а также управляет жизненным циклом этих объектов.

Инъецирование зависимостей в Java EE задаёт области, которые управляют жизненным циклом инстанцируемых и инъецируемых контейнером объектов. Так, Managed-бин, необходимый для ответа только на один клиентский запрос (например, конвертер валют), имеет область видимости, отличную от области видимости Managed-бина, необходимого для обработки нескольких клиентских запросов в течение сессии (например, корзины покупок).

Managed-бин может быть задан простым назначением области видимости обычному классу. Это делает возможным его инъецирование:

@javax.enterprise.context.RequestScoped
public class CurrencyConverter { ... }

Используйте аннотацию javax.inject.Inject для инъецирования Managed-бинов. Например:

public class MyServlet extends HttpServlet {
    @Inject CurrencyConverter cc;
    ...
}

В отличие от инъецирования ресурсов, инъецирование зависимостей является типобезопасным (typesafe), поскольку приведение выполняется к известному типу. Чтобы отделить код от реализации Managed-бина, может быть использован интерфейс для ссылки на инъецируемые объекты, которые реализует этот Managed-бин.

Для получения дополнительной информации об инъецировании зависимостей см. главу 25 «Введение в контексты и инъецирование зависимостей в Java EE» и JSR 299 («Contexts and Dependency Injection for the Java EE Platform»).


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)