2012-11-25 30 views
0

請原諒我,因爲我是Spring初學者。我正在關注本書中的示例,但我只是將數據庫從Derby更改爲MySQL。在Spring中使用JDBC時遇到空指針異常

我的主類是相當簡單:

public class Main { 

public static void main(String [] args) 
{ 
    ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml"); 

    VehicleDAO dao= (VehicleDAO) context.getBean("vehicleDao"); 
    Vehicle vehicle = new Vehicle("TEM0001", "Red", 4, 4); 
    dao.insert(vehicle); 
} 

}

它創建了一個數據訪問對象,並嘗試新的車輛對象添加到該DAO.The Vehicle類是非常簡單的,一個具有四個字段的對象類。

的VehicleDAO類粘貼在這裏:

http://pastebin.com/ekB2Rb40

和我Bean文件是這樣的:

<bean id="dataSource" 
class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" 
    value="org.gjt.mm.mysql.Driver" /> 
    <property name="url" 
    value="jdbc:mysql://localhost:3306/vehicle" /> 
    <property name="username" value="root" /> 
    <property name="password" value="3324911" /> 
    <property name="initialSize" value="2" /> 
    <property name="maxActive" value="5" /> 
</bean> 
<bean id="vehicleDao" 
    class="com.apress.springrecipes.vehicle.JdbcVehicleDao"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 

正如你可以在上面看到,我總是得到的線空指針錯誤

conn= dataSource.getConnection(); 

所以我懷疑M有些問題ySQL連接,但我已經在Eclipse的classpath中包含了「mysql-connector-java-bin.jar」。

感謝您提前提供任何幫助!

+1

你檢查過日誌嗎?正如你猜測的那樣,dataSource bean可能沒有被適當的初始化。需要更多信息。 – dgregory

回答

2

你在你的二傳手

public void setDataSource(DataSource datasource) 
     { 
       this.dataSource=dataSource; 
     } 

所以當春天注入數據源,它的價值不保存有一個錯字,我不知道你的IDE檢查這種錯誤的源代碼。

P.S.你不應該在你的DAO類中手動打開數據庫連接,我們在Spring中有JdbcTemplate。