Merhabalar. Bir deneme projemde JDBC ile oluşturduğum Connection nesnesini Inject annotasyonu ile injekte etmek istiyorum. Inject yapmayıp Veritabani vt=new Veritabani(); dediğimde proje çalışmasına karşın, Inject Veritabani vt; dediğimde nullpointerexception hatası alıyorum. Bu tip nesnelerin enjeksiyonu mümkün değil mi yoksa ben mi bir hata yapıyorumdur.
Sorunun açıklayıcı olması açısından kodları gönderiyorum. Teşekkürler.
Interface sınıf
package com.orhan.mini_cbs.vt;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/**
*
* @author Orhan
*/
public interface VeritabaniAy {
Connection baglantiKur();
void baglantiKapat(ResultSet sonucT, Statement beyan);
}
Implement sınıf
package com.orhan.mini_cbs.vt;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author Orhan
*/
public class Veritabani implements VeritabaniAy{
private static final String SURUCU="org.apache.derby.jdbc.ClientDriver";
private static final String VT_ADRES="jdbc:derby://localhost:1527/mini_gis";
private static final String KULLANICI="orhan";
private static final String PAROLA="2524305";
private static Connection vt_baglanti=null;
@Override
public Connection baglantiKur(){
try{
Class.forName(SURUCU);
System.out.println("Sürücü yerleştirildi...");
}catch(ClassNotFoundException cnfe){
System.out.println(cnfe.getMessage());
}
try{
vt_baglanti=DriverManager.getConnection(VT_ADRES, KULLANICI,PAROLA);
System.out.println("Bağlantı kuruldu...");
}catch(SQLException sqle){
System.out.println(sqle.getMessage());
}
return vt_baglanti;
}
@Override
public void baglantiKapat(ResultSet sonucT, Statement beyan){
try {
vt_baglanti.close();
System.out.println("Bağlantı kapatıldı...");
} catch (SQLException sqle) {
System.out.println(sqle.getMessage());
}
}
}
Enjeksiyonun yapılacağı sınıf
package com.orhan.mini_cbs.srg;
import com.orhan.mini_cbs.vt.VeritabaniAy;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.inject.Inject;
/**
*
* @author Orhan
*/
public class Sorgular implements SorgularAy{
@Inject
private VeritabaniAy vt;
private Statement beyan=null;
@Override
public ResultSet hepsiniGetir(String sorgu) {
//Veritabani vt=new Veritabani();
Connection baglanti=vt.baglantiKur();
try{
beyan=baglanti.createStatement();
ResultSet sonucT=beyan.executeQuery(sorgu);
return sonucT;
}catch(SQLException e){
System.out.println("Sorgu hatası : " +e.getMessage());
}
return null;
}
}
Main sınıfı
package com.orhan.mini_cbs.srg;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @author Orhan
*/
public class Uygulama {
public static void main(String[] args){
Sorgular sorgula=new Sorgular();
ResultSet sonuc=sorgula.hepsiniGetir("Select * from sekil");
try{
while(sonuc.next()){
System.out.println(sonuc.getString(2));
}
}catch(SQLException e) {
System.out.println("Hata var!" + e.getMessage());
}
}
}
Sonuç
Exception in thread "main" java.lang.NullPointerException
at com.orhan.mini_cbs.srg.Sorgular.hepsiniGetir(Sorgular.java:28)
at com.orhan.mini_cbs.srg.Uygulama.main(Uygulama.java:19)