Java 带有Spring和Hibernate的JUnit无法正确加载配置
我有一个单元测试java类文件,其中需要同时使用Spring和Hibernate 以下是模块的顶部:Java 带有Spring和Hibernate的JUnit无法正确加载配置,java,spring,hibernate,junit,Java,Spring,Hibernate,Junit,我有一个单元测试java类文件,其中需要同时使用Spring和Hibernate 以下是模块的顶部: @RunWith( SpringJUnit4ClassRunner.class ) @ContextConfiguration(locations={"classpath:server-data-config.xml"}) @Transactional public class MyTest { // Other code follows 如您所见,我从server-data-conf
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration(locations={"classpath:server-data-config.xml"})
@Transactional
public class MyTest {
// Other code follows
如您所见,我从server-data-config.xml加载了Spring的上下文配置
它包含以下需要会话工厂的配置:
<bean id="txnManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
这是因为我的会话工厂是在hibernate.cfg.xml中定义的,我没有做任何事情来加载它:
<hibernate-configuration>
<session-factory>
Some stuff here
</session-factory>
</hibernate-configuration>
为了读取hibernate.cfg.xml,我应该在单元测试java类中添加一些注释吗?如何修复此异常?您必须在xml中指定可以找到hibernate配置的位置 弹簧配置:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>file:src/hibernate.cfg.xml</value> // your hibernate.cfg.xml location
</property>
</bean>
由于使用后一种方法,您拥有sessionfactory,因此您可以这样配置它:
SessionFactory sessionFactory = new Configuration()
.configure("/persistence/hibernate.cfg.xml")
.buildSessionFactory();
有没有一种方法可以直接用注释加载hibernate.cfg.xml?可能有,但据我所知没有。
SessionFactory sessionFactory = new Configuration()
.configure("/persistence/hibernate.cfg.xml")
.buildSessionFactory();