spring中的dataSource

来源:互联网 发布:java 教程 pdf 编辑:程序博客网 时间:2024/06/15 20:17

在做SSH整合的时候,开始用了org.apache.commons.dbcp.BasicDataSource类,以前生成项目的时候没问题,只是现在加入MyEclipse Database Explorer对数据库的操作之后,就会报
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
Caused by:
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
     at java.lang.Class.getDeclaredConstructors0(Native Method)
     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
     at java.lang.Class.getConstructor0(Class.java:2640)
     at java.lang.Class.getDeclaredConstructor(Class.java:1953)
     ……
找了好几天了,就是不知道什么原因,今天总算是找到了,也是在CSDN上,

从日志信息看问题已经很明显了,是applicationContext.xmldataSource 问题。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
改为
<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">

改过之后,确实没问题了,原因是

org.springframework.jdbc.datasource.DriverManagerDataSource 不可以使用连接池。org.apache.commons.dbcp.BasicDataSource作为注入的DataSource源,为了使用 DBCP的功能,必须要将commons-dbcp.jar加入CLASSPATH中,另外还需要commons-pool.jar和commons- collections.jar,这些都可以在Spring的lib目录下找到。

org.springframework.jdbc.datasource.DriverManagerDataSource并没有提供连接池的功能,只能作作简单的单机连接测试。
使用org.apache.commons.dbcp.BasicDataSource时缺少commons-pool.jar所以会出现如题的问题。

看来要学好编程还要不断的学习!

原创粉丝点击