当前位置: 首页 > 知识库问答 >
问题:

CDI注入实体管理器通过字段名称与@产品

霍锦
2023-03-14

我正在实现一个部署到Wildfly 8.2.0的Java EE应用程序。有多个EntityManager,我想通过字段名注入它们。为此,我用@products创建了一个producer方法,该方法从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中是否有另一种更优雅的方式来实现“按字段名注入”功能

共有1个答案

严阳成
2023-03-14

我认为你的解决方案是最漂亮的。或者你可以详细描述一下这对你来说意味着什么优雅?

 类似资料:
  • 我刚刚开始使用Spring ROO,并使用数据库逆向工程命令生成了我的实体类。然而每当我试图调用生成的实体类中的一个CRUD方法时,我总是得到这个异常:Java . lang . illegalstateexception:实体管理器没有被注入(Spring Aspects JAR是否被配置为AJC/AJDT方面库?) 我怀疑(通过查看生成的文件)EntityManager没有被注入到类中。你能告

  • 问题内容: 一个很长的问题,请忍受我。 我们将Spring + JPA用于Web应用程序。我的团队在讨论如何在注入的(基于泛型的东西对AppFuse中提供的线DAO,我们不使用过的注射某种原因)。我们正在使用“应用程序管理的持久性”。 反对注入a的论点是它太重了,因此不是必需的,这就是我们需要的。而且,由于Spring将为每个Web请求创建一个DAO的新实例(我对此表示怀疑),因此不会有任何并发​

  • 问题内容: 我使用ServiceStack,并且想在Redis中将对象存储为散列,并通过id访问其部分(字段),而无需序列化整个对象,所以我有一个问题: 有没有一种方法可以使用“ Id”以外的其他属性来标记ID字段?我正在使用命名约定,其中id字段的名称类似于“类 名+ ID”。因此,在用户类中,将在 Userclass ID,项目类ItemId等字段中。 是否有一种方法可以更新对象中更改的属性,

  • 我有一个在Eclipse中定义的非常基本的JavaEE应用程序(一个EJB,一个带有PrimeFaces的网页,一个JPA实体)。它有四个项目,一个用于EAR,一个用于EJB,一个用于JPA,一个用于Web部件。问题是,我试图在JPA项目的persistence.xml中配置HiberNate作为持久化框架,但它并没有像我预期的那样完全工作。在我的EJB(@Statless)中,我可以通过两种方式

  • 我试图使用spring boot将EntityManager注释注入到我的DAO中,但是得到一个< code > InvalidDataAccessApiUsageException 消息,说没有可用的事务EntityManager。我的印象是,只要Spring Boot从< code>application.yml中获得了我的数据源信息,并且我用< code>@PersitenceContext

  • 问题内容: 我正在寻找一种通过Spring在由Hibernate从数据库加载的bean中注入某些属性的方法。 例如 我是否可以配置Spring,以便每当Hibernate创建Student类的对象时,在某些applicationContext文件中定义的某些属性就会随对象创建一起注入? 问题答案: 为此,可以使用AspectJ类与注解进行编织。这将自动连接具有Spring依赖项的带注释类的任何实例