加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 当transactionManager未命名为“transactionManager”

发布时间:2020-12-15 01:40:20 所属栏目:大数据 来源:网络整理
导读:我正在尝试Spring 3(.0.2.RELEASE)和JPA2和Hibernate 3.5.1-Final 令我不安的是,spring似乎只接受名为“transactionManager”的事务管理器 如果我没有将它命名为“transactionManager”,Spring将抛出NoSuchBeanDefinitionException:没有定义名为transaction

我正在尝试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属性.不是最优雅的方式,但可能是目前最好的选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读