druid 阿里巴巴出品的数据库连接池工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Honnyee/article/details/88813884

这里介绍一个非常好用的java数据库连接池工具:druid,号称是Java语言中最好的数据库连接池

首先看一下关于druid的介绍

Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。

Druid连接池是阿里巴巴内部唯一使用的连接池,在内部数据库相关中间件TDDL/DRDS 都内置使用强依赖了Druid连接池,经过阿里内部数千上万的系统大规模验证,经过历年双十一超大规模并发验证。

Druid连接池最初就是为监控系统采集jdbc运行信息而生的,它内置了StatFilter 功能,能采集非常完备的连接池执行信息Druid连接池内置了能和Spring/Servlet关联监控的实现,使得监控Web应用特别方便Druid连接池内置了一个监控页面,提供了非常完备的监控信息,可以快速诊断系统的瓶颈。

对于没有实战经验的新手来说十分合适

具体可看github https://github.com/alibaba/druid/wiki/Druid%E8%BF%9E%E6%8E%A5%E6%B1%A0%E4%BB%8B%E7%BB%8D

druid的使用非常简单

maven项目中加入以下内容:

<!--druid 数据库连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.2</version>
</dependency>

在web.xml文件里加入以下内容打开监控功能:

扫描二维码关注公众号,回复: 5823094 查看本文章
<servlet>
        <servlet-name>DruidStatView</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>druidWebStatFilter</filter-name>
        <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
        <init-param>
            <param-name>exclusions</param-name>
            <param-value>/public/*,*.js,*.css,/druid*,*.jsp,*.swf,/file/</param-value>
        </init-param>
        <init-param>
            <param-name>principalSessionName</param-name>
            <param-value>staffId</param-value>
        </init-param>
        <init-param>
            <param-name>profileEnable</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>druidWebStatFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

然后在Application文件里配置数据源

spring-mybatis.xml
 <!-- 配置数据源 ,使用的alibaba的开源连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <!-- 基本属性 url、user、password -->
        <property name="url" value="${master.jdbc.workUrl}"/>
        <property name="username" value="${master.jdbc.workUsername}"/>
        <property name="password" value="${master.jdbc.workPassword}"/>

        <property name="dbType" value="sqlserver"/>
        <property name="driverClassName" value="${master.jdbc.driverClassName}"/>

        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="10"/>
        <property name="minIdle" value="10"/>
        <property name="maxActive" value="50"/>

        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000"/>
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <!--配置timeBetweenLogStatsMillis>之后,DruidDataSource会定期把监控数据输出到日志中。-->
        <property name="timeBetweenLogStatsMillis" value="300000" />

        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />

        <property name="validationQuery" value="SELECT 'x'" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
        <property name="proxyFilters" >
            <list>
                <ref bean="log-filter"/>
                <ref bean="stat-filter"/>
            </list>
        </property>

        <!--&lt;!&ndash; 打开PSCache,并且指定每个连接上PSCache的大小  如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。&ndash;&gt;-->
        <!--<property name="poolPreparedStatements" value="false" />-->
        <!--<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />-->

        <!-- 配置监控统计拦截的filters -->
        <property name="filters" value="wall,stat,log4j" />
    </bean>

    <!--druid监控-->
    <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
        <!--慢查询-->
        <property name="mergeSql" value="true"/>
        <property name="slowSqlMillis" value="1000"/>
        <property name="logSlowSql" value="true"/>
    </bean>
    <!--将监控到的数据持久化到日志-->
    <bean id="log-filter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter">
        <!--表示是否显示SQL语句-->
        <!--<property name="statementExecutableSqlLogEnable" value="true"/>-->
        <!--表示是否显示结果集-->
        <property name="resultSetLogEnabled" value="false"/>
        <!--所有DataSource相关的日志-->
        <property name="dataSourceLogEnabled" value="true" />
        <!--所有statement相关的日志-->
        <property name="statementLogEnabled" value="true" />
        <!--所有连接相关的日志-->
        <property name="connectionLogEnabled" value="true" />
    </bean>

配置完成后就可以使用了,可以观察到启动时druid会初始化10和连接,

然后在你 host://项目名/druid/index.html 就可以访问监控页面了

下图是官方提供的demo的页面

猜你喜欢

转载自blog.csdn.net/Honnyee/article/details/88813884