在Spring中,如何使用ClassPathXmlApplicationContext获取EntityManager?

Hap*_*eer 4 spring entitymanager

使用Spring,我可以使用以下属性自动装配bean:

@PersistenceContext(unitName="foo") private EntityManager em;
Run Code Online (Sandbox Code Playgroud)

使用以下我可以手动自动装配bean"someBean":

ClassPathXmlApplicationContext ctx = 
      new ClassPathXmlApplicationContext("META-INF/applicationContext.xml");
AutowireCapableBeanFactory fac = ctx.getAutowireCapableBeanFactory();
fac.autowireBean(someBean);
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何直接获取特定的EntityManager.用例是我想编写一个测试,它将获取所有EntityManager对象并在其中执行简单查询,以确保它们已正确设置.为此,我需要能够从应用程序上下文中获取所有EntityManager对象.我怎样才能做到这一点?

以下不起作用.它返回一张空地图.

Map<String,EntityManager> ems = ctx.getBeansOfType(EntityManager.class);
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 5

试着打电话

EntitiyManagerFactory factory = 
          (EntityManagerFactory) ctx.getBean("myEntityManagerFactoryBean")
EntityManager em = factory.createEntityManager();
Run Code Online (Sandbox Code Playgroud)

其中"myEntityManagerFactorBean"是你的 LocalContainerEntityManagerFactoryBean

但为什么你需要呢?