【发布时间】:2023-03-24 21:21:01
【问题描述】:
我正在实现一个部署到 Wildfly 8.2.0 的 Java EE 应用程序。有多个 EntityManager,我想按字段名称注入。为此,我使用 @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 中是否有另一种更优雅的方式来实现此“按字段名称注入”功能?
【问题讨论】:
标签: java ejb cdi entitymanager