2013-07-24 105 views
0

我有一個名爲appConfig.xml彈簧XML配置文件,其中包含一個數據源的bean和其數據源作爲參數傳遞另一個JdbcTemplate的:春天JDBC:無法獲取數據源

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 
    <property name="url" value="jdbc:mysql://localhost:3306/test"/> 
</bean> 

<bean id="JDBCTemplate" class="com.myprojects.JDBCTemplate"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 

我得到一個錯誤:

異常在線程「主」 org.springframework.beans.factory.BeanCreationException:錯誤創建具有名稱豆「的JdbcTemplate」在文件中定義的[appConfig.xml]:錯誤設置屬性值;嵌套異常是org.springframework.beans.PropertyBatchUpdateException;嵌套PropertyAccessExceptions PropertyAccessException 1:org.springframework.beans.MethodInvocationException:屬性'dataSource'引發異常;嵌套異常是java.lang.IllegalArgumentException:屬性'dataSource'是必需的

從我看到這個錯誤,它不能夠傳遞dataSource到JDBCTemplate。日誌也說:

加載JDBC驅動程序:com.mysql.jdbc.Driver

我在pom.xml中提到的所有依賴關係,並驗證了我對春天的加載和MySQL的JDBC必要的罐子連接器也被加載。任何線索可能是什麼問題?

我嘗試了一個不同的項目,我手動添加了所有彈簧依賴項和mysql jdbc連接器作爲庫的一部分。它在那裏運行得很好。但是,當試圖通過pom.xml包含依賴關係時,我正面臨着這個問題。所以我假設這是爲了解決某些依賴問題,而不是被拉入其中。但無法弄清楚錯誤中的哪一個。

+0

也許堆棧跟蹤的第一部分將有所幫助。哦...還包括任何「由...引起」的部分。 –

+0

向我們展示您的'JDBCTemplate'類。 –

回答

3

它認爲你的JDBCTemplate類不具有名爲dataSource

也許你沒有擁有權類型的單個參數的公共方法setDataSource()財產。

也許它是私人的。

也許拼錯了。

+0

我的方法定義爲public void setDataSource(DataSource ds); – coder

+0

錯誤說:org.springframework.beans.MethodInvocationException:屬性'dataSource'拋出異常;嵌套異常是java.lang.IllegalArgumentException:屬性'dataSource'是必需的,這意味着它沒有傳遞正確的參數(在本例中爲dataSource本身)。我不確定什麼依賴項錯過 – coder

+0

然後'setDataSource()'方法中的日誌語句或調試斷點將發生或不會給你一些線索。如果您可以調試,請逐步完成數據源類中的構造函數和設置器。 –