Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当transactionManager未命名时;交易经理“;_Java_Unit Testing_Spring_Transactions - Fatal编程技术网

Java 当transactionManager未命名时;交易经理“;

Java 当transactionManager未命名时;交易经理“;,java,unit-testing,spring,transactions,Java,Unit Testing,Spring,Transactions,我正在尝试Spring3(.0.2.RELEASE)和JPA2以及Hibernate3.5.1-Final。。。 让我不安的是spring似乎只接受名为“transactionManager”的事务管理器 如果我不将其命名为“transactionManager”,Spring将抛出NoSuchBeanDefinitionException:没有定义名为“transactionManager”的bean 这是我的配置: <context:component-scan base-packag

我正在尝试Spring3(.0.2.RELEASE)和JPA2以及Hibernate3.5.1-Final。。。 让我不安的是spring似乎只接受名为“transactionManager”的事务管理器

如果我不将其命名为“transactionManager”,Spring将抛出NoSuchBeanDefinitionException:没有定义名为“transactionManager”的bean

这是我的配置:

<context:component-scan base-package="destiny.data.mining"/>

<context:annotation-config/>

<bean id="miningEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="persistenceUnitName" value="mining"/>
</bean>

<bean id="miningTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" >
  <property name="entityManagerFactory" ref="miningEntityManagerFactory"/>
</bean>

<tx:advice id="txAdviceMining" transaction-manager="miningTransactionManager">
  <tx:attributes>
    <tx:method name="get*"    read-only="true"/>
    <tx:method name="save*"   propagation="REQUIRED"/>
    <tx:method name="update*" propagation="REQUIRED"/>
    <tx:method name="delete*" propagation="REQUIRED"/>
    <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
  </tx:attributes>
</tx:advice>  

<aop:config>
  <aop:pointcut id="methods" expression="execution(* destiny.utils.AbstractDao+.*(..))"/>
  <aop:advisor advice-ref="txAdviceMining" pointcut-ref="methods"/>
</aop:config>

<tx:annotation-driven transaction-manager="miningTransactionManager"/>  

我的理解是,在单元测试()的上下文中,不使用以其他方式查找事务管理器的代码()


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

今天,我在尝试Spring Data JPA的非常简单的示例时遇到了同样的问题。我为事务管理器指定了自定义名称“dmTransactionManager”。要修复它,我必须指定它,我必须如下所示指定它:

<jpa:repositories base-package="com.my.repository" transaction-manager-ref="dmTransactionManager"/>


但我仍然担心,如果DAO被注入其他框架(如Wicket),它是否仍然能够将@TransactionConfiguration添加到Wicket的组件中?您必须尝试一下才能确定,但我认为在“真实”的上下文中,您不需要任何注释-Spring将根据bean id查找正确的transactionManager。如果您能将结果发布在这里,让后代也能看到,那就太好了。
<jpa:repositories base-package="com.my.repository" transaction-manager-ref="dmTransactionManager"/>