Java Spring类路径XmlApplicationContext数据连接
我正在尝试使用Spring 3.2.0创建连接,但得到NullPointerException: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"> <
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");