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

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

Инъецирование ресурса

Инъецирование ресурсов позволяет инъецировать любой ресурс, доступный в пространстве имён JNDI, в любой объект, управляемый контейнером — в сервлет, Enterprise-бин или Managed-бин. Например, вы можете использовать инъецирование ресурсов для инъецирования источников данных, коннекторов или кастомных ресурсов, доступных в пространстве имён JNDI.

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

Например, следующий код инъецирует объект источника данных, обеспечивающий соединение с базой данных Apache Derby, предустановленной в GlassFish Server:

public class MyServlet extends HttpServlet {
    @Resource(name="java:comp/DefaultDataSource")
    private javax.sql.DataSource dsc;
    ...
}

В дополнение к инъецированию на основе полей, как в предыдущем примере, вы можете использовать инъецирование ресурсов на основе методов:

public class MyServlet extends HttpServlet {
    private javax.sql.DataSource dsc;
    ...
    @Resource(name="java:comp/DefaultDataSource")
    public void setDsc(java.sql.DataSource ds) {
        dsc = ds;
    }
}

Чтобы использовать инъецирование на основе метода, set-метод должен следовать соглашениям JavaBeans для имён свойств: имя метода должно начинаться с set, иметь возвращаемый тип void и иметь только один параметр.

Аннотация @Resource находится в пакете javax.annotation и определена в JSR 250 (Common Annotations for the Java platform). Инъецирование ресурсов происходит по имени, поэтому оно не является типобезопасным (typesafe): тип объекта ресурса неизвестен на этапе компиляции, поэтому вы можете получить ошибки времени выполнения, если типы объекта и его ссылки не совпадут.


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