JBoss cdi-api использует - PullRequest
       3

JBoss cdi-api использует

0 голосов
/ 11 июня 2011

Я искал некоторую помощь по API CDI. Извините, если мой вопрос выглядит наивным, я попытался найти в сети какое-то высокоуровневое описание API-интерфейсов CDI, но не смог сделать это правильно.

Javadoc говорит:

Контексты и внедрение зависимостей (CDI) определяют набор дополнительных услуг, которые помогают улучшить структуру кода приложения.

Мой вопрос в EJB 3.X, у нас уже есть Аннотации для помощи с DI и внедрения ресурсов, таких как PersistenceContext и других видов ресурсов. Итак, где именно API-интерфейсы CDI будут полезны? В простых веб-приложениях / автономных программах на Java, использующих J2SE?

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

EJB 3.0 поставляется с внедрением зависимостей на уровне ресурсов и EJB - что уже довольно круто: -)

Что делает CDI (и что еще круче) - это снижает барьер для внедрения зависимостей втак называемые «управляемые bean-компоненты» (JSR 316), которые (среди прочих) определяют минимальный набор предварительных условий, которые класс должен извлечь из внедрения зависимостей.Немного упрощая, можно сказать, что все классы в проекте CDI являются управляемыми bean-компонентами и, следовательно, пригодны для DI.

Подводя итог, что CDI переносит EJB 3.0 в терминах DI:

  • вам больше не нужны EJB, CDI в основном работает с POJO.Это действительно легкий, потому что он позволяет вам использовать EJB, когда вам нужно EJB , а не когда вам нужен DI.
  • DI превращается в состояние - разные зависимости живут в разных областях- что-то, что EJB 3.0 полностью не в состоянии доставить.
  • вы можете воспользоваться небезопасным и слабо связанным механизмом перехватчика
  • вы можете воспользоваться преимуществами небезопасного и слабосвязанного механизма

Взгляните на первую главу здесь , и вы поймете: -)

1 голос
/ 13 июня 2011

DI в Java EE5 позволяет вводить только такие ресурсы, как JDBC DataSource, JPA EntityManager, UserTransaction, Web-сервисы, EJB и т. Д. Все эти ресурсы управляются контейнером.

В частности, с EE6 и с CDI вы не ограничены вводить только ресурсы - вы можете вводить все (каждый компонент).Посмотрите на аннотации, которые поставляются со спецификацией CDI: @Inject, @Named, @Scope, @Singleton и т. Д. CDI дает вам такие функции, как события, декораторы и т. Д.

Посмотрите на это руководство, оно должно помочь вам понять CDI: http://java.dzone.com/articles/cdi-di-p2

...