suppresswarnings sirve retentionpolicy reflexion que para example crear anotaciones annotation java java-ee annotations cdi

sirve - Cómo apilar una anotación personalizada en Java con @Inject annotation



reflection en java (2)

Lo vi varias veces al navegar ... las personas están usando la anotación @Inject con la suya para inyectar EntityManager esta manera:

@Inject @MyEm EnityManager em;

porque no puedes simplemente inyectar el EntityManager . Puedes hacerlo solo con @PersistenceContext . ¿Alguien sabe cómo hacer que esto funcione (con la anotación personalizada), porque no encontré ninguna información en la red? Da un ejemplo si puedes, por favor.


Esto se llama un "calificador". Cada tutorial de CDI debe explicar sobre ellos. En breve:

  • crea tu propia anotación y @Qualifier con @Qualifier
  • use su anotación de calificador en sus clases concretas que implementen alguna interfaz, o en métodos de productor que creen una instancia
  • utilice su anotación personalizada en el punto de inyección para diferenciar entre dos o más implementaciones de una interfaz

Básicamente, lo que debe hacer es crear una anotación discriminatoria y usarla junto con un productor. Esto le permite simplemente @Inject your Entity Manager en otros beans dentro de su aplicación Java EE. Aquí hay un ejemplo:

@Qualifier @Retention(RUNTIME) @Target(METHOD, FIELD, PARAMETER, TYPE) public interface @MyEm { } public class EntityProducer { @PersistenceContext(unitName = ''MyPU'', type = PersistenceContextType.EXTENDED) private EntityManager entityManager; @Produces @MyEm public EntityManager getEntityManager() { return entityManager; } } public class MyDAO { @Inject @MyEm private EntityManager entityManager; }