我正在实现部署到Wildfly 8.2.0的Java EE应用程序。有多个EntityManagers,我想通过字段名称注入。为此,我使用@Produces创建了一个生产者方法,该方法从InjectionPoint获取字段名称。
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;
此解决方案到目前为止有效,但CDI中是否有另一种更优雅的方式来实现“按字段名称注入”功能?
答案 0 :(得分:1)
我认为您的解决方案尽可能最漂亮。或者你可以详细描述它对你的优雅意味着什么?