Я внедряю приложение Java EE, развернутое в Wildfly 8.2.0. Существует несколько EntityManager, которые я хочу ввести по имени поля. Для этого я создал метод продюсера с @Produces, который получает имя поля из InjectionPoint.CDI Inject EntityManagers по имени поля с @Produces
public class Resources {
@PersistenceContext(unitName = "primary")
private EntityManager primaryEm;
@PersistenceContext(unitName = "secondary")
private EntityManager secondaryEm;
@Produces
public EntityManager getEntityManager(InjectionPoint injectionPoint)
throws Exception {
Field field = getClass().getDeclaredField(
injectionPoint.getMember().getName());
return (EntityManager) field.get(this);
}
}
Тогда я просто впрыснуть EntityManager с соответствующим именем поля:
@Inject
private EntityManager primaryEm;
Это решение работает до сих пор, но есть другой, более удобный способ в КДИ осуществить это «впрыскивать полем имя "?
Я рад это прочитать. Ну, мне было интересно, есть ли возможность решить эту проблему без этого метода производителя, включая отражение. –