阿里Druid连接池配置

1.启用Druid连接池

1.基于Maven配置如下(Gradle类似),pom.xml引入如下依赖:
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>${druid-version}</version>
	</dependency>

2.配置数据库连接
    <!-- 配置数据源 Druid -->
    <bean id="dataSource" class="com.lianqian.urs.util.UrsDruidDataSource"
          destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClass}"/>
        <property name="filters" value="wall,stat"/>
        <property name="proxyFilters">
            <list>
                <ref bean="stat-filter"/>
                <ref bean="log-filter"/>
            </list>
        </property>
        <property name="url" value="${jdbc.jdbcUrl}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="initialSize" value="${jdbc.initialSize.main}"/>
        <property name="maxActive" value="${jdbc.maxActive.main}"/>
        <property name="minIdle" value="${jdbc.minIdle.main}"/>
        <property name="maxWait" value="${jdbc.maxWait.main}"/>
    </bean>
其中,UrsDruidDataSource是我们自定义的类继承自com.alibaba.druid.pool.DruidDataSource。也可以直接填入,继承类主要是完成一些数据库连接的加密等操作。

2.启用Druid监控功能

配置web.xml文件如下:

	<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>
 	</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>
    </servlet>
    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>
配置完成后,即可访问。启动web服务器,在浏览器中访问:http://你的服务器ip地址:端口/druid/index.html

3.开启Druid防火墙

配置spring的xml文件,参考1.2,已经添加

<property name="filters" value="wall,stat"/>
此时就可以看到SQL防火墙界面可以查看到表的拦截相关信息

4.开启慢sql监控

    <!-- 慢SQL记录 -->
    <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
        <!-- 慢sql时间设置,即执行时间大于200毫秒的都是慢sql -->
        <property name="slowSqlMillis" value="200"/>
        <property name="logSlowSql" value="true"/>
    </bean>

    <bean id="log-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
        <property name="dataSourceLogEnabled" value="true" />
        <property name="statementExecutableSqlLogEnable" value="true" />
    </bean>

配置logger4j的输出目录,可以输出慢sql的日志。
# Druid
log4j.logger.druid.sql=WARN,druid
log4j.logger.druid.sql.DataSource=WARN,druid
log4j.logger.druid.sql.Connection=WARN,druid
log4j.logger.druid.sql.Statement=WARN,druid

log4j.appender.druid=org.apache.log4j.DailyRollingFileAppender
log4j.appender.druid.layout=org.apache.log4j.PatternLayout
log4j.appender.druid.layout.ConversionPattern= [%d{HH\:mm\:ss}] %c{1} - %m%n
log4j.appender.druid.datePattern='.'yyyy-MM-dd
log4j.appender.druid.Threshold = WARN
log4j.appender.druid.append=true
log4j.appender.druid.File=${catalina.home}/logs/debt-collection/druid-slow-sql.log

5.启用AOP拦截功能

可以按照类型,方法名拦截,我们选择按方法名拦截。先引入aop配置,在Spring的头里面配置增加如下

xmlns:aop="http://www.springframework.org/schema/aop"
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

再启用AOP拦截

    <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.lianqian.urs.business.service.*</value>
                <value>com.lianqian.urs.business.dao.*</value>
                <value>com.lianqian.urs.controller.*</value>
            </list>
        </property>
    </bean>

    <aop:config proxy-target-class="true">
        <aop:advisor advice-ref="druid-stat-interceptor"
                     pointcut-ref="druid-stat-pointcut" />
    </aop:config>
proxy-target-class="true" 这个配置如果不加上,会导致注入失败,因为Spring框架的AOP默认是采用JDK动态代理模式, CGLIB是针对类实现代理,因为这些Controller和Service,DAO层很多方法都不是实现父接口的,所以需要加上,否则会报错

此时重启服务器就可以看到某个方法执行次数以及时间等等。

服务器的访问地址是

 http://localhost:8080/druid/index.html


参考阿里官方文档:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值