public class MyServlet extends HttpServlet {
@Resource(name="java:comp/DefaultDataSource")
private javax.sql.DataSource dsc;
...
}
|
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): тип объекта ресурса неизвестен на этапе компиляции, поэтому вы можете получить ошибки времени выполнения, если типы объекта и его ссылки не совпадут.
| Назад | Вперёд | Содержание |
Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)