Spring中数据库连接池需要注意的问题

来源:互联网 发布:键位修改软件 编辑:程序博客网 时间:2024/05/17 18:47

1、问题描述
使用Spring+mybatis+c3p0数据源,并且使用properties文件提供相关配置参数。
产生的问题:
Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.

2、产生问题可能的原因
①驱动相关参数配置书写不正确。特别需要注意的是不能带有多余的空格

②使用如下方式引入properties文件
<context:property-placeholder location="classpath:jdbc.properties" />
这种引入properties文件的方式使用很普遍,但是也可能因为路径等等原因导致无法正常的引入。即使在集成开发 环境中可以通过Ctrl+鼠标左键进行文件跳转,但并不代表引入一定正确。

3、正确的引入properties文件
需要通过Spring提供的类来引入properties文件,这样才能保证properties文件的正确引入
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:jdbc.properties</value>
    </property>
</bean>
通过这种方式引入后,上述问题就顺利解决了。

4、在Spring配置文件中直接书写驱动等相关参数,转义字符需要注意
配置中如果直接使用&也可以能会引起无法获取底层数据库连接的问题。
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/seckill?useUnicode=true&amp;characterEncoding=utf8"></property>
<property name="user" value="root"></property>
<property name="password" value="1"></property>

5、数据库连接常见的一些其他问题
(1)com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'
该问题最可能的原因就是驱动的版本问题,可以试着换一个低版本。
(2)java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0
原因是你MySQL的驱动生成时的JAVAC版本比你现在的JRE运行环境高造成的, 解决方法通常是换个版本低些的MySQL驱动包。
这两类问题在使用Maven去管理项目的时候出现的比较多,因为maven中一般会使用较新的版本,避免此类问题最好的方法就是指明你使用的具体版本,项目中长期使用的版本应该是最好的。

总结:上述问题和解决方案都是在实际中遇到并实践过的。每个人问题可能存在区别,解决方法也可能不同。



0 0
原创粉丝点击