Приветствую Вас ГостьСреда, 15.05.2024, 08:04

Программирование на Java, Android, Delphi


Блог

Главная » 2014 » Февраль » 27 » Инжекция ресурсов и инжекция зависимостей в Java EE
11:46
Инжекция ресурсов и инжекция зависимостей в Java EE
Java EE предоставляет 2 механизма инжекции: инжекцию ресурсов и инжекцию зависимостей. Механизм инжекции позволяет получать доступ к ресурсам и зависимым объектам без необходимости их явного инстанцирования. Для инжектирования нужно объявить ресурс и декорировать поле или метод специальной аннотацией.

Инжекция ресурсов

Инжекция ресурсов позволяет инжектировать любой ресурс через JNDI в любой объект, управляемый контейнером будь то сервлет, ejb, managed bean. Основанная на поле инжекция ресурсов:
public class MyServlet extends HttpServlet {
@Resource(name="java:comp/DefaultDataSource")
private javax.sql.DataSource dsc;
...
}
Инжекция ресурсов основанная на методе. При этом метод должен обладать условиями, предъявляемые к JavaBean компоненту: он должен начинаться с set, возвращать void и иметь только один входной параметр. Следует помнить, что инжекция ресурсов разрешается (то есть вычисляется) по имени, поэтому является типо-небезопасной.
public class MyServlet extends HttpServlet {
private javax.sql.DataSource dsc;
...
@Resource(name="java:comp/DefaultDataSource")
public void setDsc(java.sql.DataSource ds) {
dsc = ds;
}
}
Инжекция зависимостей
Инжекция зависимостей позволяет превращать обычные Java классы в управляемые и внедрять (инжектировать) их в другие управляемые классы. Используя инжекцию зависимостей вы можете инжектировать любой управляемый объект и контейнер автоматически его создаст. Инжекция зависимостей определяет понятие контекста (scope), которая определяет жизненный цикл инжектируемого объекта. Контекст управляемого объекта необходимого для единственного ответа клиенту (например конвертер валюты) отличается от области действия объекта необходимого для множественной обработки в рамках одной сессии (например корзина интернет магазина). Инжекция зависимостей является типо-безопасной, в отличие от инжекции ресурсов.
@javax.enterprise.context.RequestScoped
public class CurrencyConverter { ... }
Use the javax.inject.Injectannotation to inject managed beans; for example:
public class MyServlet extends HttpServlet {
@Inject CurrencyConverter cc;
...
}
Категория: Java EE | Просмотров: 1408 | Добавил: alex | Теги: Dependency Injection, Resource Injection, java ee | Рейтинг: 5.0/1
Категории раздела
Java (Общие вопросы) [17]
Java (Библиотека, пакеты Java) [17]
Java (Разработка программного обеспечения на Java) [5]
Java (Среда разработки NetBeans) [5]
JSF + PrimeFaces [21]
Java EE [11]
Разное [3]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поиск
Календарь
«  Февраль 2014  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
2425262728
Архив записей