2013-07-24 106 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()'方法中的日志语句或调试断点将发生或不会给你一些线索。如果您可以调试,请逐步完成数据源类中的构造函数和设置器。 –