【发布时间】:2016-05-13 16:00:46
【问题描述】:
让我先发帖full stack trace 。
基本上,我有这个 DAO 类:
package nl.alli.persistence.util;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* Created by thijm on 13-5-2016.
*/
@Component
public class Dao {
@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
}
我正在尝试结合使用 spring 和 hibernate 5 来自动装配 SessionFactory。
我的 spring.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--<!– Register Annotation-based Post Processing Beans –>-->
<!--<context:annotation-config />-->
<!--<!– Scan context package for any eligible annotation configured beans. –>-->
<!--<context:component-scan base-package="nl.alli" />-->
<context:annotation-config/>
<bean id="myDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://url.url"/>
<property name="password" value="tdjfkladsf"/>
<property name="username" value="jaskdf"/>
</bean>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
</value>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" value="mySessionFactory"/>
</bean>
<!--<bean id="BjornJansonDataCollectorBean" class="nl.alli.pvoutput.BjornJansonDataCollector"/>-->
<!--<bean id="PVOutputDataCollector" class="nl.alli.pvoutput.PVoutputDataCollector"/>-->
<!--<bean id="PVOutputDataServiceImplBean" class="nl.alli.persistence.PVOutputDataServiceImpl"/>-->
<!--<bean id="PVOutputDataDaoImplBean" class="nl.alli.persistence.PVOutputDataDaoImpl"/>-->
<!--<bean id="DaoBean" class="nl.alli.persistence.util.Dao"/>-->
</beans>
甚至 IntelliJ 也能看到 private SessionFactory sessionFactory 和 spring.xml 中的 bean 之间的链接。我不知道是什么导致了异常,如果有人可以帮助我,那就太好了。
提前致谢!
【问题讨论】:
-
可能
spring.xml从未被拾取,因此mySessionFactory尚未被初始化,如下面的答案所示。如果你打开休眠日志,你可以很容易地弄清楚。至少,在启动过程中它应该打印出休眠配置。
标签: java spring hibernate spring-boot