在Spring配置文件中数据源的连接大致有三种:
1、Spring自带的连接
2、apache的dbcp插件连接
3、c3p0的插件连接
下面一一的解释其配置文件的参数以及区别:
1、Spring自带的连接DriverManagerDataSource
<bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="root123" />
</bean>
在DriverManagerDataSource源码中,Spring只提供了连接的四个参数:数据库连接方言,连接的数据库地址,用户名,密码。
然而在实际的生产中,我们需要连接的效率和执行效率或者大规模用户访问时的效率要求比较高的时候我们就要使用到数据库连接池,一般使用的都是第三方提供的插件。
在DriverManagerDataSource中,Spring只提供了连接的四个参数:数据库连接方言,连接的数据库地址,用户名,密码。
然而在实际的生产中,我们需要连接的效率和执行效率或者大规模用户访问时的效率要求比较高的时候我们就要使用到数据库连接池,一般使用的都是第三方提供的插件。
2、apache的dbcp插件连接
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- 使用properties来配置 数据库连接池-->
<!-- 数据库连接方言 -->
<property name="driverClassName" value="${jdbc_driverClassName}"></property>
<property name="url" value="${jdbc_url}"></property>
<property name="username" value="${jdbc_username}"></property>
<property name="password" value="${jdbc_password}"></property>
<!-- 初始化连接大小 -->
<property name="initialSize" value="10" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="100" />
<!-- 连接池最小空闲 -->
<property name="minIdle" value="10" />
<!-- 超时等待时间以毫秒为单位 -->
<property name="maxWait" value="100"/>
<!-- 设置在自动回收超时连接的时候打印连接的超时错误 -->
<property name="logAbandoned" value="true"/>
<!-- 设置自动回收超时连接 -->
<property name="removeAbandoned" value="true"/>
<!-- 自动回收超时时间(以秒数为单位) -->
<property name="removeAbandonedTimeout" value="10"/>
</bean>
在apache的dbcp插件连接BasicDataSource需要我们在maven中配置如下的代码来添加相应的jar包:
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
关于apache的dbcp插件连接中的参数解释:
initialSize 池启动时创建的连接数量
maxActive 同一时间可以从池分配的最多连接数量。设置为0时表示无限制。
maxIdle 池里不会被释放的最多空闲连接数量。设置为0时表示无限制。
maxOpenPreparedStatements 同一时间能够从语句池里分配的已备语句的最大数量。设置为0时表示无限制。
maxWait 在抛出异常之前,池等待连接被回收的最长时间(当没有可用连接时)。设置为-1表示无限等待。
minEvictableIdleTimeMillis 连接保持空闲而不被驱逐的最长时间。
minIdle 在不新建连接的条件下,池中保持空闲的最少连接数。
poolPreparedStatements 是否对已备语句进行池管理(布尔值)。
3、c3p0插件连接
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://localhost:3306/test"
p:user="root"
p:password="123456" >
</bean>
c3p0插件连接时,也需要下载相应的jar包,一般推荐使用c3p0-0.9.1.jar,比较稳定:
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1</version>
</dependency>
关于相关的参数解释和应用可以查找相关的API说明。