Java 当transactionManager未命名时;交易经理“;
我正在尝试Spring3(.0.2.RELEASE)和JPA2以及Hibernate3.5.1-Final。。。 让我不安的是spring似乎只接受名为“transactionManager”的事务管理器 如果我不将其命名为“transactionManager”,Spring将抛出NoSuchBeanDefinitionException:没有定义名为“transactionManager”的bean 这是我的配置: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
<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"/>