6.Druid关联
6.1.Web关联监控配置
WebStatFilter用于采集web-jdbc关联监控的数据。
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>
exlusions配置
经常需要排除一些不必要的url,比如.js,/jslib/等等。配置在init-param中。比如:
<init-param> <param-name>exclusions</param-name> <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value></init-param>
sessionStatMaxCount配置
缺省sessionStatMaxCount是1000个。你可以按需要进行配置,比如:
<init-param> <param-name>sessionStatMaxCount</param-name> <param-value>1000</param-value></init-param>
sessionStatEnable配置
你可以关闭session统计功能,比如:
<init-param> <param-name>sessionStatEnable</param-name> <param-value>false</param-value></init-param>
principalSessionName配置
你可以配置principalSessionName,使得druid能够知道当前的session的用户是谁。比如:
<init-param> <param-name>principalSessionName</param-name> <param-value>xxx.user</param-value></init-param>
根据需要,把其中的xxx.user修改为你user信息保存在session中的sessionName。
注意:如果你session中保存的是非string类型的对象,需要重载toString方法。
principalCookieName
如果你的user信息保存在cookie中,你可以配置principalCookieName,使得druid知道当前的user是谁
<init-param> <param-name>principalCookieName</param-name> <param-value>xxx.user</param-value> </init-param>
根据需要,把其中的xxx.user修改为你user信息保存在cookie中的cookieName
profileEnable
druid 0.2.7版本开始支持profile,配置profileEnable能够监控单个url调用的sql列表。
<init-param> <param-name>profileEnable</param-name> <param-value>true</param-value></init-param>
结果展示
6.2.Spring关联监控配置
Druid提供了Spring和Jdbc的关联监控。
配置spring
com.alibaba.druid.support.spring.stat.DruidStatInterceptor是一个标准的Spring MethodInterceptor。可以灵活进行AOP配置。
Spring AOP的配置文档:
http://static.springsource.org/spring/docs/current/spring-framework-reference/html/aop-api.html
按类型拦截配置
<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"> </bean> <bean id="druid-type-proxyCreator" class="com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator"> <!-- 所有ABCInterface的派生类被拦截监控 --> <property name="targetBeanType" value="xxxx.ABCInterface" /> <property name="interceptorNames"> <list> <value>druid-stat-interceptor</value> </list> </property> </bean>
方法名正则匹配拦截配置
<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.mycompany.service.*</value> <value>com.mycompany.dao.*</value> </list> </property></bean> <aop:config> <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" /></aop:config>
有些情况下,可能你需要配置proxy-target-class,例如
<aop:config proxy-target-class="true"> <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" /></aop:config>
按照BeanId来拦截配置
<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">