Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Duda con CDI

Estimados,
Buenas tardes. Les escribo desde Argentina y éste es mi primer POST.
Alguien me podría explicar para qué sirve @Qualifier y definir nuevas Annotations en CDI. No me cierra el concepto. Viendo el tutorial de JEE encontré éstos ejemplos:

@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface Informal {}

@Informal
public class InformalGreeting extends Greeting {
public String greet(String name) {
return "Hi, " + name + "!";
}
}

import javax.inject.Inject;

public class Printer {
@Inject @Informal Greeting greeting;
..
}

Pero aún no logro ver cuál es su función.

Desde ya muchas graicas!.

diciembre 6, 2013 | Registered Commenterlkdm128

Para que tu ejemplo tenga mas sentido, necesitarías implementar otra anotación (por ejemplo @Formal) y otra clase que implemente la interfaz Greeting. Por ejemplo:


@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface Formal {}

@Formal
public class FormalGreeting extends Greeting { ... }

y ahora en tu aplicación puedes usar:


@Inject
@Formal
private Greeting greeting1;

@Inject
@Informal
private Greeting greting2;

De esta manera, el framework CDI sabe que debe crear una instancia de la clase "FormalGreeting" para inyectarla en "greeting1" y una instancia de "InformalGreeting" para inyectarla en "greeting2".

¿Cómo ves?

diciembre 8, 2013 | Registered Commenterantoniovl