Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring类路径XmlApplicationContext数据连接_Java_Spring_Jdbc_Connection - Fatal编程技术网

Java Spring类路径XmlApplicationContext数据连接

Java Spring类路径XmlApplicationContext数据连接,java,spring,jdbc,connection,Java,Spring,Jdbc,Connection,我正在尝试使用Spring 3.2.0创建连接,但得到NullPointerException: ApplicationContext ctx = new ClassPathXmlApplicationContext("conexao/conexao.xml") 我的文件conexao.xml位于conexao包中。我的xml文件配置如下所示: <beans> <bean id="banco" class="modelo.Banco"> <

我正在尝试使用Spring 3.2.0创建连接,但得到NullPointerException:

ApplicationContext ctx = new ClassPathXmlApplicationContext("conexao/conexao.xml")
我的文件conexao.xml位于
conexao
包中。我的xml文件配置如下所示:

<beans>
    <bean id="banco" class="modelo.Banco">
        <property name="usuario">
            <value>root</value>
        </property>
        <property name="senha">
            <value>""</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost:3306/agenda</value>
        </property>
        <property name="classForName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
    </bean>
</beans>
我的代码:

package dao;

import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import model.Banco;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Conexao {

    private static Banco banco;

    private static Conexao instance;

    public static Conexao getInstance() {
        if (Conexao.instance == null) {
            Conexao.instance = new Conexao();
        }
        return Conexao.instance;

    }

    private Conexao() {

    }

    public Connection abrirConexao() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "conexao/conexao.xml");
        Connection con = null;
        banco = (Banco) ctx.getBean("Banco");
        try {
            Class.forName(banco.getClassForName()); // Carrega o driver
            con = (Connection) DriverManager.getConnection(banco.getUrl(),
                    banco.getUsuario(), banco.getSenha()); // obtem a conexao
                                                            // com o banco
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }

        return con;
    }

    public Statement getStatement() throws SQLException, ClassNotFoundException {
        return abrirConexao().createStatement();
    }

    public PreparedStatement getPreparedStatement(String sql)
            throws InterruptedException {

        PreparedStatement ps = null;
        try {
            ps = this.abrirConexao().prepareStatement(sql);
        } catch (Exception e) {
            System.out
                    .println("Erro com a conexao. Verifique se sua conexao esta ativa.");
        }
        return ps;
    }

我做错了什么?

据我所知,您的类名不同:

import model.Banco;
在xml配置中,您有:

<bean id="banco" class="modelo.Banco">
声明如下:

<bean id="banco" class="modelo.Banco">

尝试仅将XML更改为:

<bean id="Banco" class="modelo.Banco">

你能这样试试吗

ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:conexao/conexao.xml");

例外情况是什么?请添加stacktraceDo您在创建上下文时获得的NPE?资本化也很重要,Banko!=banko。异常为NullPointerException粘贴堆栈跟踪可能会有所帮助。答案已编辑并添加了区分大小写的问题。请将XML bean id从
banco
更改为
banco
<bean id="Banco" class="modelo.Banco">
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:conexao/conexao.xml");