Comenzando con cdi
Configuración rápida en un entorno Java SE
Si está trabajando con un servidor de aplicaciones Java EE 6+, CDI es parte del contenedor y no necesita hacer nada para comenzar a usarlo. Pero CDI no se limita a los servidores de aplicaciones Java EE. Se puede usar en aplicaciones Java SE o contenedores de servlets simples con la misma facilidad. Echemos un vistazo al uso de CDI en una aplicación de línea de comandos simple.
Paso 1. Agregue dependencias a su POM.
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>3.0.0.Alpha15</version>
</dependency>
Paso 2. Agregue beans.xml
CDI requiere un archivo beans.xml vacío para que pueda escanear el JAR en busca de clases. Así que crea
src/main/resources/META-INF/beans.xml
con lo siguiente
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all">
<scan>
<exclude name="org.jboss.weld.**" />
</scan>
</beans>
Paso 3. Inicializar CDI
En este ejemplo, el método principal (String []) inicializa CDI y luego CDI se usa para obtener una instancia de la clase para comenzar a ejecutar la aplicación SE.
import java.util.Arrays;
import java.util.List;
import javax.enterprise.inject.spi.CDI;
import javax.inject.Inject;
public class Main {
public static void main(String[] args) {
CDI<Object> cdi = CDI.getCDIProvider().initialize();
Main main = cdi.select(Main.class).get();
main.main(Arrays.asList(args));
}
@Inject
protected MyService myService;
protected void main(List<String> args) {
System.out.println("Application starting");
// MyService object injected by CDI
myService.go();
}
}
Eso es todo, realmente simple.
Instalación o configuración
Instrucciones detalladas sobre cómo configurar o instalar cdi.
Implementaciones
CDI es una especificación Java EE. Especifica cómo se deben hacer las cosas y qué funciones se deben proporcionar, pero en realidad no es una biblioteca específica o un conjunto de código. Para usar CDI, necesitará usar una implementación de CDI.
La implementación de referencia de la especificación CDI es un conjunto de bibliotecas conocidas como Weld. Existe una implementación alternativa de la especificación CDI como Apache OpenWebBeans. Cualquiera de estas implementaciones podrá brindarle las características de CDI. Si no está utilizando un servidor de aplicaciones Java EE que se envía con una de estas implementaciones, será usted quien seleccione e instale una de estas implementaciones en su aplicación o tiempo de ejecución.