Contexts and Dependency Injection (CDI)
Obtenga información sobre Contexts and Dependency Injection 1.2 para la plataforma Java™ EE (CDI 1.2), que es una implementación de JSR 346 basada en JBoss Weld.
CDI se activa en una aplicación mediante la presencia de un archivo beans.xml
dentro de ese módulo o mediante anotaciones de definición de bean que se definen en la especificación de JSR 346
. Puede encontrar el archivo
beans.xml en el directorio WEB-INF de un archivador web (WAR) o directorio META-INF
de otros tipos de archivadores. Cuando se activa, el contenedor proporciona servicios tales como:
- Gestión de contexto
- Inyección de dependencias de tipo seguro: se crea una instancia de un bean gestionado por CDI y se inyecta cuando sea necesario.
- Decoradores, que implementan una o más interfaces de bean y pueden contener lógica empresarial. Los decoradores están inhabilitados de forma predeterminada. Puede tener varios decoradores por bean y el orden se define mediante el archivo beans.xml. Utilice beans.xml o @Priority para habilitar los decoradores.
- Enlaces de interceptor: Los interceptores, que se habilitan manualmente en el archivo beans.xml o se habilitan globalmente con @Priority, se enlazan utilizando un tipo de enlace de interceptor.
- Modelo de sucesos
- Integración en archivos JavaServer Faces (JSF) y JavaServer Pages (JSP) que utilizan el lenguaje de expresión (EL)
- Clases de componente JavaEE que soportan inyecciones y el uso de interceptores
Las clases de API relacionadas con la especificación para JSR 299 y JSR 330 así como las clases de implementación modificadas de IBM® que se basan en Apache OpenWebBeans se empaquetan con el entorno de tiempo de ejecución del servidor de aplicaciones.
Aunque la implementación de CDI de producto se basa en Apache OpenWebBeans, se añaden los siguientes cambios
y adiciones a OpenWebBeans para soportar la integración con el tiempo de ejecución de servidor:
- Integración con otros contenedores de Java Platform, Enterprise Edition (Java EE) en WebSphere Application Server tradicional que soportan componentes inyectables.
- Implementación de ScannerService que utiliza el escáner de código de bytes de WebSphere Application Server tradicional.
- Uso directo de metadatos de Enterprise JavaBeans (EJB) de producto para determinar los tipos de EJB.
- Registro automático de los escuchas de servlet, filtros, interceptores para las aplicaciones CDI que ya no necesitan que los añada cada aplicación.
- Implementaciones específicas de producto de muchas Interfaces de programación de servicios (SPI) de OpenWebBeans, tales como ResourceInjectionService, TransactionService y servicio de migración tras error.
Importante: CDI no proporciona transacciones gestionadas por contenedor
ni la seguridad.
