【问题标题】:Spring JDBC simple exampleSpring JDBC 简单示例
【发布时间】:2015-02-07 10:26:55
【问题描述】:

我是 Spring 新手,我使用 JDBC 制作了一个简单的应用程序,该应用程序从数据库中读取记录并显示在屏幕上。

package jdbcexample;

import java.util.List;

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

public class MainApp {

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext(
            "Beans.xml");
    StudentJDBCTemplate studentjdbctemplate = (StudentJDBCTemplate) context
            .getBean("studentjdbctemplate");
    System.out.println("Listing Reocrds : ");
    List<Student> students = studentjdbctemplate.listStudents();
    for (Student record : students)
        System.out.println("id : " + record.getId() + " name : "
                + record.getName() + " password : " + record.getPassword());

}

}

这是我的 Bean.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" 
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">

<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://locallhost:3306/TEST" />
<property name="username" value="root"/>
<property name="password" value="password" />
</bean>

<bean id="studentjdbctemplate" class="jdbcexample.StudentJDBCTemplate">
    <property name="datasource" ref="datasource" />
</bean>

</beans>

所有引用的 Java 文件和 XML 文件都在同一个文件夹中,但我仍然收到此错误。你能帮我解决这个问题吗?

    log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [Beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [Beans.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:126)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:92)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:465)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:395)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at jdbcexample.MainApp.main(MainApp.java:12)
Caused by: java.io.FileNotFoundException: class path resource [Beans.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:141)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
    ... 13 more

【问题讨论】:

  • 您需要将 Beans.xml 保留在类路径中。
  • 请接受以下答案之一,以便其他有相同问题的人找到解决方案

标签: java spring jdbc


【解决方案1】:

这里在异常跟踪class path resource [Beans.xml] cannot be opened because it does not exist

意味着类路径中缺少 Beans.xml,因此您会看到异常。确保 Beans.xml 在类路径中,它会正常工作。

【讨论】:

  • 如何将它包含在类路径中?
  • 要么使用 CLASSPATH 环境变量来获得 Beans.xml 所在的目录,要么使用 -cp 选项使用 java 命令传递它,例如 -cp "/a/b/c" 其中 Beans.xml 驻留在 " c" 目录。
【解决方案2】:

Have a look at this article. 这将帮助您设置一个基本的 MAVEN Spring MVC HIbernate Sitemesh 项目

这里缺少的是 file not found,即 Beans.xml。

你可以在 web.xml 中定义这个类,你可以这样做

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/Beans.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

你需要这样做

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:spring/application-config.xml,
            /WEB-INF/Beans.xml
        </param-value>
    </context-param>

我希望这对你有用

【讨论】:

  • 我没有使用 MVC 框架。我正在使用 jdbc 制作简单的 Spring 应用程序。
【解决方案3】:

我将 Beans.xml 移动到 src 文件夹,程序运行成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2012-09-13
    • 1970-01-01
    • 2012-03-13
    • 2014-10-30
    • 2014-07-12
    • 2017-11-26
    相关资源
    最近更新 更多