根据现在的所知情况, Druid 包括 3 方面功能, 如有缺失, 请大家指正
1. 作为数据库连接池使用
- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
- <property name="driverClass" value="${jdbc.driverClass}"></property>
- <property name=""value="${jdbc.}"></property>
- <property name="url" value="${jdbc.url}"></property>
- <property name="username" value="${jdbc.username}"></property>
- <property name="password" value="${jdbc.password}"></property>
- <!-- 连接池最大使用连接数 -->
- <property name="maxActive" value="${jdbc.max.active}"></property>
- <!-- 初始化连接大小 -->
- <property name="initialSize" value="${jdbc.initial.size}"></property>
- <!-- 获取连接最大等待时间 -->
- <property name="maxWait" value="${jdbc.max.wait}"></property>
- <property name="minIdle" value="${jdbc.min.idle}"></property>
- <!-- 自动清除无用连接 -->
- <property name="removeAbandoned" value="${jdbc.remove.abandoned}"></property>
- <!-- 清除无用连接的等待时间 -->
- <property name="removeAbandonedTimeout" value="${jdbc.remove.abandoned.timeout}"></property>
- <!-- 连接属性 -->
- <property name="connectionProperties" value="clientEncoding=UTF-8"></property>
- <property name="testOnBorrow" value="${jdbc.testOnBorrow}"></property>
- <property name="validationQuery" value="${jdbc.validation.query}"></property>
- <property name="filters" value="stat" />
- <property name="proxyFilters">
- <list>
- <ref bean="wall-filter"/>
- </list>
- </property>
- </bean>
- <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
- <property name="config" ref="wall-config" />
- </bean>
- <bean id="wall-config" class="com.alibaba.druid.wall.WallConfig">
- <property name="multiStatementAllow" value="true" />
- </bean>
- <!-- 对数据源进行事务管理 -->
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource"/>
2. 提供 sql 执行 log 查询功能
配置 web.xml, 至此基本配置完成, 可以查看内置监控页面了, 路径是 / druid/index.html
- <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>
3. 采集 web-jdbc 关联监控的数据
配置 WebStatFilter, 之后可以使用 Web 应用 URI 监控 Session 监控等功能
- <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>profileEnable</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>principalCookieName</param-name>
- <param-value>USER_COOKIE</param-value>
- </init-param>
- <init-param>
- <param-name>principalSessionName</param-name>
- <param-value>USER_SESSION</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>DruidWebStatFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
修改 Spring 的配置文件
- <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.company.bussines.service.*</value>
- <value>com.company.bussines.dao.*</value>
- </list>
- </property>
- </bean>
- <aop:config proxy-target-class="true">
- <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
- </aop:config>
来源: http://www.bubuko.com/infodetail-2516011.html