美文网首页
从零搭建项目开发框架-25druid数据源配置

从零搭建项目开发框架-25druid数据源配置

作者: 孔垂云 | 来源:发表于2017-07-08 22:20 被阅读0次

    该项目开发框架采用的druid数据源,该数据源的配置还是非常丰富的,可以监控所有执行的sql及service操作。常用配置如下所示:

    web.xml增加数据源监控配置

     <!--设置Druid 数据源监控 -->
        <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>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
            </init-param>
            <init-param>
                <param-name>principalSessionName</param-name>
                <param-value>userSession</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>DruidWebStatFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <servlet>
            <servlet-name>DruidStatView</servlet-name>
            <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
            <init-param>
                <param-name>resetEnable</param-name>
                <param-value>false</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>DruidStatView</servlet-name>
            <url-pattern>/druid/*</url-pattern>
        </servlet-mapping>
    

    这地方定义监控哪些请求,druid也是通过servlet来处理的。

    applicationContext.xml配置数据源

    <bean id="logFilter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter">
            <property name="statementExecutableSqlLogEnable" value="true"/>
        </bean>
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
              destroy-method="close">
            <property name="driverClassName" value="${jdbc.driverClassName}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            <!-- 配置初始化大小、最小、最大 -->
            <property name="initialSize" value="${jdbc.initialSize}"/>
            <property name="minIdle" value="1"/>
            <property name="maxActive" value="${jdbc.maxActive}"/>
            <!-- 配置获取连接等待超时的时间 -->
            <property name="maxWait" value="60000"/>
            <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
            <property name="timeBetweenEvictionRunsMillis" value="60000"/>
            <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
            <property name="minEvictableIdleTimeMillis" value="300000"/>
            <property name="validationQuery" value="SELECT 'x' from dual"/>
            <property name="testWhileIdle" value="true"/>
            <property name="testOnBorrow" value="false"/>
            <property name="testOnReturn" value="false"/>
            <!-- 配置监控统计拦截的filters -->
            <property name="filters" value="stat"/>
            <property name="proxyFilters">
                <list>
                    <ref bean="logFilter"/>
                </list>
            </property>
        </bean>
    
     <!-- druid监控-->
        <bean id="druid-stat-interceptor"
              class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
        </bean>
    
        <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
            <property name="patterns">
                <list>
                    <value>com.critc.*.*.service.*</value>
                </list>
            </property>
        </bean>
    
        <aop:config>
            <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut"/>
        </aop:config>
    

    这地方定义druid对应的log,可以拦截filter等,这样系统运行后输入:http://localhost:8080/druid可以查看当前的监控情况:

    数据源基本信息:

    数据源基本信息.png

    Sql执行情况:

    sql执行情况.png

    Service执行情况

    service执行情况.png

    当然如果开发水平很高的话,完全可以自己开发一套这样的监控在程序里面。

    相关文章

      网友评论

          本文标题:从零搭建项目开发框架-25druid数据源配置

          本文链接:https://www.haomeiwen.com/subject/dtgocxtx.html