java– 当transactionManager未命名为“transactionManager”时

java– 当transactionManager未命名为“transactionManager”时,第1张

概述我正在尝试Spring 3(.0.2.RELEASE)和JPA2和Hibernate 3.5.1-Final ......令我不安的是,spring似乎只接受名为“transactionManager”的事务管理器如果我没有将它命名为“transactionManager”,Spring将抛出NoSuchBeanDefinitionException:没有定

我正在尝试Spring 3(.0.2.RELEASE)和JPA2和Hibernate 3.5.1-Final ……
令我不安的是,spring似乎只接受名为“transactionManager”的事务管理器

如果我没有将它命名为“transactionManager”,Spring将抛出NoSuchBeanDeFinitionException:没有定义名为’transactionManager’的bean.

这是我的配置:

在此配置中,实体管理器工厂不一定命名为“entityManagerFactory”,“txAdvice”也不一定命名为“txAdvice”.
但我不知道为什么Spring上需要一个名为“transactionManager”的事务管理器?

有没有办法不命名事务管理器“transactionManager”?
(我正在运行多个spring配置文件,所以我尽量避免名称冲突)

测试代码:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:mining.xml"})public class MiningPersonDaoTest{  @Inject  private EntityManagerFactory miningEntityManagerFactory;  @Inject  private MiningPersonDao miningPersonDao;  @Transactional  @Test  public void testUpdate()  {    MiningPerson p = miningPersonDao.get(42L);    p.setLocationName("OOXX");    miningPersonDao.update(p);    System.out.println(p);  }}
最佳答案我的理解是,在单元测试(TransactionalTestExecutionListener)的上下文中,不使用以其他方式查找事务管理器的代码(TransactionInterceptor#determineTransactionManager).

您可以尝试使用@TransactionConfiguration注释您的测试类,它接受transactionManager属性.不是最优雅的方式,但可能是目前最好的选择. 总结

以上是内存溢出为你收集整理的java – 当transactionManager未命名为“transactionManager”时全部内容,希望文章能够帮你解决java – 当transactionManager未命名为“transactionManager”时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1265860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)