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

    xiaoxiao2021-03-25  63

    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 &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中一般会使用较新的版本,避免此类问题最好的方法就是指明你使用的具体版本,项目中长期使用的版本应该是最好的。 总结:上述问题和解决方案都是在实际中遇到并实践过的。每个人问题可能存在区别,解决方法也可能不同。
    转载请注明原文地址: https://ju.6miu.com/read-39158.html

    最新回复(0)