2017-06-18 122 views
1

得到初始化我有被創建和數據插入table.Please一類在下面找到我的代碼:豆不盡,春

類DBConnection的:

import java.sql.Connection; 
import java.sql.DriverManager; 

public class DBConnection { 
    public static Connection getDBConnection() { 
     String url = "jdbc:mysql://localhost:3306/"; 
     String dbName = "expenseCalc"; 
     String driver = "com.mysql.jdbc.Driver"; 
     String userName = "*********"; 
     String password = "*******"; 
     Connection conn = null; 
     try { 
      Class.forName(driver).newInstance(); 
      conn = (Connection) DriverManager.getConnection(url + dbName, userName, password); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return conn; 
    } 
} 

SpringConfig.class 

    import org.springframework.context.annotation.Bean; 
    import org.springframework.context.annotation.Configuration; 

    @Configuration 
    public class SpringConfig { 
     @Bean("sqloperations") 
     public SQLOperationJavaConfig sqLoperationJavaConfig() { 
      DBConnection dbConnection=new AppJavaConfig<DBConnection>().getbean("dbconnection"); 
      return new SQLOperationJavaConfig(dbConnection); 
     } 
     @Bean("dbconnection") 
     public DBConnection dbConnection() { 
      return new DBConnection(); 
     } 
    } 

SQLOperationJavaConfig.class 

public class SQLOperationJavaConfig { 
    private DBConnection dbConnection; 
    public SQLOperationJavaConfig(DBConnection dbConnection) { 
     this.dbConnection=dbConnection; 
    } 
    private Connection conn; 
    public void createTable() throws SQLException { 
     conn = dbConnection.getDBConnection(); 
     String sql="drop table if exists dummy"; 
     String sql1 = "create table dummy (id int,name varchar(20))"; 
     Statement statement = conn.createStatement(); 
     statement.execute(sql); 
     statement.execute(sql1); 
     System.out.println("Table Created!!"); 
    } 

    public void insertData() throws SQLException { 
     conn = dbConnection.getDBConnection(); 
     String sql = "insert into dummy values(12,'Sunny')"; 
     Statement statement = conn.createStatement(); 
     statement.execute(sql); 
     System.out.println("Record Inserted!!"); 
    } 
} 

AppJavaConfig.java

public class AppJavaConfig<T> { 
    static ApplicationContext context; 
    public static void main(String[] args) throws SQLException { 
     context = new AnnotationConfigApplicationContext(SpringConfig.class); 
     SQLOperationJavaConfig sqLoperationJavaConfig = (SQLOperationJavaConfig) context.getBean("sqloperations"); 
     sqLoperationJavaConfig.createTable(); 
     sqLoperationJavaConfig.insertData(); 
    } 
    public T getbean(String beanName) { 
     T t=(T) context.getBean(beanName); 
     return t; 
    } 
} 

運行這個類時,我得到下面的錯誤:

Caused by: java.lang.NullPointerException 
    at com.src.springproj.AppJavaConfig.getbean(AppJavaConfig.java:17) 
    at com.src.springproj.SpringConfig.sqLoperationJavaConfig(SpringConfig.java:10) 

getBean方法沒有返回「dbconnection」Bean。

回答

0

你不需要這個的getBean method..just SQLOperationsJavaConfig的初始化更改爲以下:

return new SQLOperationJavaConfig(dbConnection()); 

春天將看到已爲DBConnection的

0

使用@Autowired創建的豆

@autowired 
private DBConnection dbConnection; 

因爲@Autowired註釋可以用於自動裝配上setter方法豆就像@Required註釋,構造函數,屬性或方法具有任意名稱和/或多個參數。

+0

我只想使用JavaConfig並且沒有自動裝配。因此我沒有使用@autowired註釋。 –