Spring错误:找不到依赖项

时间:2016-05-13 16:00:46

标签: java spring hibernate spring-boot

让我先发布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">

    <!--&lt;!&ndash; Register Annotation-based Post Processing Beans &ndash;&gt;-->
    <!--<context:annotation-config />-->

    <!--&lt;!&ndash; Scan context package for any eligible annotation configured beans. &ndash;&gt;-->
    <!--<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 sessionFactoryspring.xml中的bean之间的链接。我不知道造成这种例外的原因是什么,如果有人能帮助我,那就太棒了。

提前致谢!

3 个答案:

答案 0 :(得分:1)

发生此错误主要是因为没有从Spring XML文件创建Spring bean,这意味着 spring.xml 没有加载到内存中。

以下是解决问题的一些提示:

  1. 检查您是否正在从web.xml正确加载spring.xml

  2. 理想情况下,您应将所有bean从 spring.xml 文件移至 applicationContext.xml 文件

答案 1 :(得分:1)

我看到你使用spring-boot。据我所知,默认情况下它没有得到xml配置。

您是否已在代码中的某处将xml导入到java配置中,如此

@ImportResource("classpath:spring.xml")

答案 2 :(得分:0)

看起来您在类路径上缺少库,如果您使用的是Maven,请添加以下内容:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>