Springboot整合Druid数据源
1、数据源介绍
目前常用的数据源主要有c3p0、dbcp、proxool、druid:
Spring 推荐使用dbcp;
Hibernate 推荐使用c3p0和proxool;
-
DBCP:apache
DBCP(DataBase connection pool)数据库连接池。是apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。
-
C3P0:
C3P0是一个开源的jdbc连接池,它实现了数据源和jndi绑定,支持jdbc3规范和jdbc2的标准扩展。c3p0是异步操作的,缓慢的jdbc操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。c3p0有自动回收空闲连接功能。 -
Proxool:Sourceforge
Proxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。综合来说,稳定性是dbcp>=c3p0>proxool
2、Druid数据库连接池
简介:
Druid不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQLParser。 Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQLServer、H2等等。
Druid针对Oracle和MySql做了特别优化,比如Oracle的PSCache内存占用优化,MySql的ping检测优化。 Druid在监控、可扩展性、稳定性和性能方面都有明显的优势。Druid提供了Filter-Chain模式的扩展API,可以自己编写Filter拦截JDBC中的任何方法,可以在上面做任何事情,比如说性能监控、SQL审计、用户名密码加密、日志等等。
配置:
为了方便大家迁移,Druid的配置和DBCP是基本一致的,如果你原来是使用DBCP,迁移是十分方便的,只需要把corg.apache.commons.dbcp.BasicDataSource修改为om.alibaba.druid.pool.DruidDataSource就好了。
<beanid="dataSource" class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close">
<property name="url"value="${jdbc_url}" />
<property name="username"value="${jdbc_user}" />
<property name="password"value="${jdbc_password}" />
<property name="filters"value="stat" />
<property name="maxActive"value="20" />
<property name="initialSize"value="1" />
<property name="maxWait"value