簡體   English   中英

錯誤org.springframework.beans.factory.BeanCreationException:創建類路徑資源中定義的名稱為“ dataSource”的bean時出錯

[英]Error org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource

我嘗試使用JDBC制作Spring Embedded Database HSQL Exmple,但出現錯誤,我的代碼,consol輸出和gist鏈接都在下面。如何修復此項目,謝謝幫助。

要點代碼

 package com.fatih.model;

public class Calisan {
private String ad;
private String soyad;
public String getAd() {
    return ad;
}
public void setAd(String ad) {
    this.ad = ad;
}
public String getSoyad() {
    return soyad;
}
public void setSoyad(String soyad) {
    this.soyad = soyad;
}

public Calisan() {
    // TODO Auto-generated constructor stub
}
public Calisan(String ad, String soyad) {
    super();
    this.ad = ad;
    this.soyad = soyad;
}
@Override
public String toString() {
    return "Calisan [ad=" + ad + ", soyad=" + soyad + "]";
}




}

--

package com.fatih.dao;

import java.util.List;

import com.fatih.model.Calisan;

public interface CalisanDAO {

public void calisanEkle(Calisan calisan);
public List<Calisan> caliasanListele();

    }

--

 package com.fatih.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;
import javax.sql.DataSource;

import com.fatih.dao.CalisanDAO;
import com.fatih.model.Calisan;


@Named
public class CalisanDAOImpl implements CalisanDAO {


@Inject
private DataSource dataSource;







public CalisanDAOImpl() {
    // TODO Auto-generated constructor stub
}




public void calisanEkle(Calisan calisan) {
    PreparedStatement ps=null;
    Connection conn=null;

    try {

        conn=dataSource.getConnection();

        ps=conn.prepareStatement("insert into     Calisan(ad,soyad)values(?,?)");

        ps.setString(1, calisan.getAd());
        ps.setString(2, calisan.getSoyad());

        ps.executeUpdate();





    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        try{
        if(ps!=null){
            ps.close();
        }
        }catch(SQLException e){
            throw new RuntimeException(e);
        }
    }

}

public List<Calisan> caliasanListele() {
    PreparedStatement ps=null;
    Connection conn=null;

    List<Calisan> calisanList=new ArrayList<Calisan>();

    try{

        conn=dataSource.getConnection();

        ps=conn.prepareStatement("select*from calisan");

        ResultSet rs=ps.executeQuery();

        while(rs.next()){

            //int id=rs.getInt("calisanId");
            String ad=rs.getString("ad");
            String soyad=rs.getString("soyad");

            Calisan calisan=new Calisan(ad, soyad);

            calisanList.add(calisan);
        }
            System.out.println("Calisan listesi");

            for (Calisan calisan : calisanList) {
                System.out.println(calisan);
            }










    }catch(SQLException e){
        e.printStackTrace();
    }


    return calisanList;
}

}

--

    package com.fatih.service;

import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import com.fatih.dao.impl.CalisanDAOImpl;
import com.fatih.model.Calisan;

@Named
public class CalisanService{




private CalisanDAOImpl calisanDAOImpl;







public CalisanService() {
    // TODO Auto-generated constructor stub
}


@Inject
public CalisanService(CalisanDAOImpl calisanDAOImpl) {

    this.calisanDAOImpl = calisanDAOImpl;
}

public void calisanEkle(Calisan calisan){
    calisanDAOImpl.calisanEkle(calisan);
}

public List<Calisan> calisanListele(){
    return calisanDAOImpl.caliasanListele();
}

}

--

 package com.fatih.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.fatih.model.Calisan;
import com.fatih.service.CalisanService;

public class CalisanTest {
public static void main(String[] args) {

ApplicationContext context=new ClassPathXmlApplicationContext("app-    config.xml");

CalisanService calisanService=context.getBean(CalisanService.class);

Calisan calisan=new Calisan("ali" , "kaya"); 

calisanService.calisanEkle(calisan);


}
}

--

<?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:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/jdbc
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd  
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<bean id="dataSource"
        class="org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean">
    <property name="databasePopulator" ref="populator" />
    <property name="databaseType" value="HSQL" />
</bean>
<bean id="populator"
        class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator">
    <property name="scripts">
        <list>
            <value>schema.sql</value>
            <value>data.sql</value>
        </list>
    </property>
</bean>


<context:annotation-config />
<context:component-scan
    base-package="com.fatih" />

data.sql

insert into Calisan (ad, soyad) values ('Ayhan', 'Isik');

insert into Calisan ( ad, soyad) values ('Zeki', 'Müren');

insert into Calisan (ad, soyad) values ( 'Kemal','Sunal');

schema.sql

drop table Calisan if exists;

create table Calisan (ad varchar(50), soyad varchar(50));

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0     http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.fatih</groupId>
<artifactId>SpringDBJDBCEmbeddedDatabase</artifactId>
<version>0.0.1-SNAPSHOT</version>


<properties>
    <spring.version>4.2.0.RELEASE</spring.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>




    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-jdbc</artifactId>

        <version>${spring.version}</version>

    </dependency>


    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>2.2.2</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.hsqldb/hsqldb -->
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.1</version>
</dependency>



</dependencies>








</project>

控制台輸出

Eki 20,2016 9:26:26 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh INFO:刷新org.springframework.context.support.ClassPathXmlApplicationContext@31221be2:啟動日期[2016年10月20日星期四,21:26:26 EEST]; 上下文層次結構的根Eki 20,2016 9:26:26 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO:從類路徑資源中加載XML bean定義[app-config.xml] Eki 20,2016 9:26 :27 PM org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor信息:JSR-330'javax.inject.Inject'標注已找到並支持自動裝配Eki 20,2016 9:26:27 PM org.springframework.context.support。 ClassPathXmlApplicationContext refresh警告:上下文初始化期間遇到異常-取消刷新嘗試org.springframework.beans.factory.BeanCreationException:創建在類路徑資源[app-config.xml]中定義的名稱為“ dataSource”的bean時出錯:bean的初始化失敗; 嵌套的異常是java.lang.NoClassDefFoundError:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)上的org / springframework.daos / dao / DataAccessException在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory上。 org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:305)的org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)的createBean(AbstractAutowireCapableBeanFactory.java:482) ),位於org.springframework.beans的org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)的org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)處。 org.springframework.context.support.AbstractApplicat上的factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:753) 位於org.org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)的ionContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834)在org.org的org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)在com.fatih.test.CalisanTest.main(CalisanTest.java:12)處的springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)原因:java.lang.NoClassDefFoundError:org / springframework / dao / DataAccessException at java .lang.ClassLoader.defineClass1(本機方法)(位於java.lang.ClassLoader.defineClass(未知源),位於java.security.SecureClassLoader.defineClass(未知源),位於java.net。URLClassLoader.defineClass(未知源),位於java.net。 .URLClassLoader.access $ 100(未知源)(java.net).URLClassLoader $ 1.run(未知源)(java.net.URLClassLoader $ 1.run(未知源)(java.security.AccessController.doPrivileged(本機方法)) va.net.URLClassLoader.findClass(未知源)(位於java.lang.ClassLoader.loadClass(未知源)(位於sun.misc.Launcher $ AppClassLoader.loadClass(未知源))(java.lang.ClassLoader.loadClass(未知源)) org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:上java.lang.Class.privateGetDeclaredMethods(未知源)上的java.lang.Class.getDeclaredMethods0(本機方法) 606)在org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:518)在org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:504)在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineors (AutowiredAnnotationBeanPostProcessor.java:241)在org.springframework.beans的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1069)。 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1042)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:305)在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)處的AbstractAutowireCapableBeanFactory.java:482) org.springframework.beans.factory.org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)在org.springframework.beans.factory。 org.springframework.beans.factory.supp上的support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481)上的ort.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)在org.springframework.beans.factory.support.AbstractAutowireCapableBean( java:1226)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)... 11更多原因:java.lang.ClassNotFoundException:org.springframework.dao.DataAccessException java.net URLClassLoader.findClass(未知源)(java.lang.ClassLoader.loadClass(未知源),sun.misc.Launcher $ AppClassLoader.loadClass(java.lang.ClassLoader.loadClass(未知源))... 43更多

線程“主”中的異常org.springframework.beans.factory.BeanCreationException:創建在類路徑資源[app-config.xml]中定義的名稱為“ dataSource”的bean時出錯:初始化bean失敗; 嵌套的異常是java.lang.NoClassDefFoundError:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)上的org / springframework.daos / dao / DataAccessException在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory上。 org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:305)的org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)的createBean(AbstractAutowireCapableBeanFactory.java:482) ),位於org.springframework.beans的org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)的org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)處。 org.springframework.context.support.AbstractApplicat上的factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:753) 位於org.org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)的ionContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834)在org.org的org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)在com.fatih.test.CalisanTest.main(CalisanTest.java:12)處的springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)原因:java.lang.NoClassDefFoundError:org / springframework / dao / DataAccessException at java .lang.ClassLoader.defineClass1(本機方法)(位於java.lang.ClassLoader.defineClass(未知源),位於java.security.SecureClassLoader.defineClass(未知源),位於java.net。URLClassLoader.defineClass(未知源),位於java.net。 .URLClassLoader.access $ 100(未知源)(java.net).URLClassLoader $ 1.run(未知源)(java.net.URLClassLoader $ 1.run(未知源)(java.security.AccessController.doPrivileged(本機方法)) va.net.URLClassLoader.findClass(未知源)(位於java.lang.ClassLoader.loadClass(未知源)(位於sun.misc.Launcher $ AppClassLoader.loadClass(未知源))(java.lang.ClassLoader.loadClass(未知源)) org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:上java.lang.Class.privateGetDeclaredMethods(未知源)上的java.lang.Class.getDeclaredMethods0(本機方法) 606)在org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:518)在org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:504)在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineors (AutowiredAnnotationBeanPostProcessor.java:241)在org.springframework.beans的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1069)。 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1042)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:305)在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)處的AbstractAutowireCapableBeanFactory.java:482) org.springframework.beans.factory.org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)在org.springframework.beans.factory。 org.springframework.beans.factory.supp上的support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481)上的ort.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)在org.springframework.beans.factory.support.AbstractAutowireCapableBean( java:1226)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)... 11更多原因:java.lang.ClassNotFoundException:org.springframework.dao.DataAccessException java.net URLClassLoader.findClass(未知源)(java.lang.ClassLoader.loadClass(未知源),sun.misc.Launcher $ AppClassLoader.loadClass(java.lang.ClassLoader.loadClass(未知源))... 43更多

好像您缺少spring-dao.jar。

nested exception is java.lang.NoClassDefFoundError: org/springframework/dao/DataAccessException

確保您的類路徑中有jar文件。

請注意,在appconfig.xml(應用程序上下文)中,您尚未定義任何DataSource對象。 您定義了一個DataSourceFactory。 那不一樣。

在您的類中,您將注入一個DataSource對象。

因此,在您的appconfig.xml(應用程序上下文)中,應替換為

<bean id="dataSource"
        class="org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean">
    <property name="databasePopulator" ref="populator" />
    <property name="databaseType" value="HSQL" />
</bean>
<bean id="populator"
        class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator">
    <property name="scripts">
        <list>
            <value>schema.sql</value>
            <value>data.sql</value>
        </list>
    </property>
</bean>

有了這個

<!-- jdbc:hsqldb:mem:dataSource -->
<jdbc:embedded-database id="dataSource" type="HSQL">
    <jdbc:script location="classpath:schema.sql" />
    <jdbc:script location="classpath:data.sql" />
    <!-- assuming you have your sql scripts in src/main/resources -->
</jdbc:embedded-database>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 錯誤 org.springframework.beans.factory.BeanCreationException:創建類路徑資源中定義的名稱為“entityManagerFactory”的 bean 時出錯 Springboot:org.springframework.beans.factory.BeanCreationException:在類路徑資源中創建名稱為&#39;showAuthorsView&#39;的bean時出錯 org.springframework.beans.factory.BeanCreationException:創建類路徑資源中定義的名稱為XXX的bean時出錯 org.springframework.beans.factory.BeanCreationException:在類路徑資源中創建名稱為&#39;entityManagerFactory&#39;的bean時出錯 org.springframework.beans.factory.BeanCreationException:在 class 路徑資源中定義名稱為“webHandler”的 bean 創建錯誤 org.springframework.beans.factory.BeanCreationException:創建名稱為“scriptDataSourceInitializer”的 bean 在 class 路徑資源中定義時出錯? 上下文初始化失敗org.springframework.beans.factory.BeanCreationException:使用類路徑資源中定義的名稱創建bean時出錯 org.springframework.beans.factory.BeanCreationException:創建類路徑資源[jlcindia.xml]中定義的名為&#39;sessionFactory&#39;的bean時出錯 org.springframework.beans.factory.BeanCreationException:在ServletContext資源中創建名稱為&#39;entityManagerFactory&#39;的bean時出錯 org.springframework.beans.factory.BeanCreationException:在 ServletContext 資源中創建名為“sessionFactory”的 bean 時出錯
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM