Читаем Изучаем Java EE 7 полностью

В самой первой версии Java EE (в то время именуемой J2EE) была представлена концепция инверсии управления (IoC), в рамках которой контейнер обеспечивал управление вашим бизнес-кодом и предоставлял технические сервисы (такие как управление транзакциями или безопасностью). Это подразумевало управление жизненным циклом компонентов, а также предоставление компонентам внедрения зависимостей и конфигурации. Данные сервисы были встроены в контейнер, и программистам пришлось дожидаться более поздних версий Java EE, чтобы получить к ним доступ. Конфигурация компонентов в ранних версиях стала возможной благодаря дескрипторам развертывания XML, однако простой и надежный API для управления жизненным циклом и внедрения зависимостей появился только в Java EE 5 и Java EE 6.

Версия Java EE 6 предоставила контекст и внедрение зависимостей (Context and Dependency Injection — CDI) для упрощения некоторых задач, фактически став центральной спецификацией, объединившей все эти концепции. Сегодня CDI дает управляемым объектам EJB одну из наиболее приоритетных моделей программирования. Она преобразует практически все сущности Java EE в управляемые компоненты, которые можно внедрять и перехватывать. Концепция CDI основана на принципе «слабой связанности и строгой типизации». Это означает, что компоненты связаны слабо, но при этом строго типизированы. Добавление в платформу перехватчиков, декораторов и событий придает ей дополнительную гибкость. И в то же время CDI соединяет веб-уровень и серверную часть путем гомогенизации областей видимости.

В этой главе рассказывается о внедрении зависимостей, ограничении и слабой связанности, то есть здесь охватывается большинство концепций, лежащих в основе CDI.

<p>Понятие компонентов</p>

В Java SE имеются компоненты JavaBeans, а в Java EE — Enterprise JavaBeans. Но Java EE также использует другие типы компонентов: сервлеты, веб-службы SOAP и RESTful, сущности и, конечно, управляемые компоненты. Не стоит забывать и об объектах POJO. POJO — это просто Java-классы, запускаемые в пределах виртуальной машины Java (JVM). JavaBeans — это те же объекты POJO, которые следуют определенным шаблонам (например, правилам именования для процессов доступа и модифицирующих методов (геттеров/сеттеров) для свойства, конструктора по умолчанию) и исполняются в пределах JVM. Все остальные компоненты Java EE также следуют определенным шаблонам: например, компонент Enterprise JavaBean должен иметь метаданные, конструктор по умолчанию не может быть конечным, и т. д. Они также выполняются внутри контейнера (например, контейнера EJB), который предоставляет определенные сервисы: например, транзакции, организацию пула, безопасность и т. д. Теперь поговорим о простых и управляемых компонентах.

Управляемые компоненты — это объекты, которые управляются контейнером и поддерживают только небольшой набор базовых сервисов: внедрение ресурса, управление жизненным циклом и перехват. Они появились в Java EE 6, обеспечив более легковесную компонентную модель, приведенную в соответствие с остальной частью платформы Java EE. Они дают общее основание различным типам компонентов, существующих в платформе Java EE. Например, Enterprise JavaBean может рассматриваться как управляемый компонент с дополнительными сервисами. Сервлет также может считаться управляемым компонентом с дополнительными сервисами (отличным от EJB) и т. д.

Компоненты — это объекты CDI, основанные на базовой модели управляемых компонентов. Они имеют улучшенный жизненный цикл для объектов с сохранением состояния; привязаны к четко определенным контекстам; обеспечивают сохранение безопасности типов при внедрении зависимостей, перехвате и декорации; специализируются с помощью аннотаций квалификатора; могут использоваться в языке выражений (EL). По сути, с очень малым количеством исключений потенциально каждый класс Java, имеющий конструктор по умолчанию и исполняемый внутри контейнера, является компонентом. Поэтому компоненты JavaBeans и Enterprise JavaBeans также могут воспользоваться преимуществами этих сервисов CDI.

<p>Внедрение зависимостей</p>

Внедрение зависимостей (DI) — это шаблон разработки, в котором разделяются зависимые компоненты. Здесь мы имеем дело с инверсией управления, причем инверсии подвергается процесс получения необходимой зависимости. Этот термин был введен Мартином Фаулером. Внедрение зависимостей в такой управляемой среде, как Java EE, можно охарактеризовать как полную противоположность применения интерфейса JNDI. Объекту не приходится искать другие объекты, так как контейнер внедряет эти зависимые сущности без вашего участия. В этом состоит так называемый принцип Голливуда: «Не звоните нам (не ищите объекты), мы сами вам позвоним (внедрим объекты)».

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры