阿里druid学习,号称最好的数据库连接池

来源:互联网 发布:dnf面板数据怎么看 编辑:程序博客网 时间:2024/05/18 21:09

一:介绍

  https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5

二:比较

 druid是类似dbcp,c3p0的一个数据库连接池框架,性能比这两者好,同时自带监控页面,可以实时监控应用的连接池情况以及其中性能差的sql,方便我们找出应用中连接池方面的问题,多的就不说了,详细的介绍,github上都有

三:实战

  我自己用druid结合mybatis写了一个demo,话不多说,上代码,o(╯□╰)o

先看spring配置

[html] view plain copy
 print?
  1. <!-- 德鲁伊配置数据连接池 -->  
  2.     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  
  3.          <property name="url" value="${jdbc_url}" />  
  4.          <property name="username" value="${jdbc_user}"/>  
  5.          <property name="password" value="${jdbc_password}" />  
  6.          <property name="maxActive" value="${maxActive}" />  
  7.          <!-- filters:统计监控信息,value是一个string,支持组合配置,如stat,log4j,那么问题来了,如果自定义的filter该如何配置呢,可以通过bean的形式添加 -->  
  8. <!--          <property name="filters" value="${filters}" /> -->  
  9.          <property name="proxyFilters">  
  10.             <list>  
  11.                 <ref bean="stat-filter"/>  
  12.             </list>  
  13.          </property>   
  14.     </bean>  
  15.   
  16.     <bean id="transactionManager"  
  17.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  18.         <property name="dataSource" ref="dataSource" />  
  19.     </bean>  
  20.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  21.         <property name="dataSource" ref="dataSource"></property>  
  22.         <property name="mapperLocations" value="classpath:com/dingwang/mapping/*Mapper.xml"></property>  
  23.     </bean>  
  24.       
  25.     <!-- druid监控统计bean 对应上文dataSource中的proxyFilters -->  
  26.     <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">  
  27.         <property name="slowSqlMillis" value="1000" />  
  28.         <property name="logSlowSql" value="true" />  
  29.     </bean>  


web.xml配置

[html] view plain copy
 print?
  1. <servlet>  
  2.       <servlet-name>DruidStatView</servlet-name>  
  3.       <!-- 展示监控页面的servlet -->  
  4.       <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>  
  5.       <init-param>  
  6.         <!-- 允许访问监控界面的IP -->  
  7.         <param-name>allow</param-name>  
  8.         <param-value>128.242.127.1/24,128.242.128.1</param-value>  
  9.       </init-param>  
  10.       <init-param>  
  11.         <!-- 不允许访问监控界面的IP,优先级高于allow配置 -->  
  12.         <param-name>deny</param-name>  
  13.         <param-value>10.139.162.231</param-value>  
  14.       </init-param>  
  15.   </servlet>  
  16.   <servlet-mapping>  
  17.       <servlet-name>DruidStatView</servlet-name>  
  18.       <url-pattern>/druid/*</url-pattern>  
  19.   </servlet-mapping>  

测试案例:

[java] view plain copy
 print?
  1. /** 
  2.  * 类SqlBean.java的实现描述:TODO 类实现描述 
  3.  *  
  4.  * @author wangding_91@163.com 2016年1月14日 下午5:43:35 
  5.  */  
  6. public class SqlBean {  
  7.     private static final Logger log = LoggerFactory.getLogger(SqlBean.class);  
  8.   
  9.     @Resource  
  10.     private PolicyDTOMapper     policyDAO;  
  11.   
  12.     private Runnable            runner;  
  13.   
  14.     public void init() {  
  15.         runner = new Runnable() {  
  16.   
  17.             public void run() {  
  18.                 while (true) {  
  19.                     PolicyDTO dto = new PolicyDTO();  
  20.                     dto = SqlBean.this.policyDAO.selectByPrimaryKey(5l);  
  21.                     log.info(dto.toString());  
  22.                     try {  
  23.                         Thread.sleep(2 * 1000);  
  24.                     } catch (InterruptedException e) {  
  25.                         // TODO Auto-generated catch block  
  26.                         e.printStackTrace();  
  27.                     }  
  28.                 }  
  29.             }  
  30.         };  
  31.   
  32.         log.info("---------------start  SqlBean-------------");  
  33.   
  34.         Thread t = new Thread(runner);  
  35.         t.start();  
  36.   
  37.     }  
  38.   
  39. }  

四:效果图



0 0
原创粉丝点击