zoukankan      html  css  js  c++  java
  • Druid数据源配置入门

     Druid是什么

    Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。

    同时Druid不仅仅是一个数据库连接池,它包括四个部分:

        Druid是一个JDBC组件,它包括三个部分:

        基于Filter-Chain模式的插件体系。

        DruidDataSource 高效可管理的数据库连接池。

        SQLParser

    Druid的功能

    1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

    2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

    3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

    4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

    5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

     

     Druid的使用

    环境说明:

    开发工具:intellij idea

    JDK版本:1.8

    项目:Spring+SpringMvc+Mybatis+Maven+MySQL

    使用步骤:

    1.配置Maven

     1 <!-- mybatis框架包 start -->
     2         <dependency>
     3             <groupId>org.mybatis</groupId>
     4             <artifactId>mybatis</artifactId>
     5             <version>3.2.8</version>
     6         </dependency>
     7         <dependency>
     8             <groupId>org.mybatis</groupId>
     9             <artifactId>mybatis-spring</artifactId>
    10             <version>1.2.2</version>
    11         </dependency>
    12         <!-- mybatis框架包 end -->
    13         <!-- 数据库驱动 -->
    14         <dependency>
    15             <groupId>mysql</groupId>
    16             <artifactId>mysql-connector-java</artifactId>
    17             <version>5.1.35</version>
    18         </dependency>
    19         <!-- 导入druid的jar包-->
    20         <dependency>
    21             <groupId>com.alibaba</groupId>
    22             <artifactId>druid</artifactId>
    23             <version>1.0.27</version>
    24         </dependency>
    View Code

    2、配置属性文件:mybatis.properties (DataSource连接参数)

     1 driver=com.mysql.jdbc.Driver
     2 url=jdbc:mysql://10.1.51.235:3306/jawavesys
     3 username=root
     4 password=jawave88
     5 #定义初始连接数
     6 initialSize=0
     7 #定义最大连接数
     8 maxActive=20
     9 #定义最大空闲
    10 maxIdle=20
    11 #定义最小空闲
    12 minIdle=1
    13 #定义最长等待时间
    14 maxWait=60000

    3.SPRING配置文件:spring-base.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xsi:schemaLocation="http://www.springframework.org/schema/beans
     5                         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
     6                         http://www.springframework.org/schema/tx
     7                         http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
     8 
     9     <!-- 引入配置文件 -->
    10     <bean id="propertyConfigurer"
    11           class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    12         <property name="location" value="classpath:mybatis.properties" />
    13     </bean>
    14 
    15     <!--druid的配置-->
    16     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
    17           init-method="init" destroy-method="close">
    18         <property name="driverClassName" value="${driver}" />
    19         <property name="url" value="${url}" />
    20         <property name="username" value="${username}" />
    21         <property name="password" value="${password}" />
    22         <!-- 初始化连接大小 -->
    23         <property name="initialSize" value="${initialSize}"></property>
    24         <!-- 连接池最大数量 -->
    25         <property name="maxActive" value="${maxActive}"></property>
    26         <!-- 连接池最大空闲 -->
    27         <property name="maxIdle" value="${maxIdle}"></property>
    28         <!-- 连接池最小空闲 -->
    29         <property name="minIdle" value="${minIdle}"></property>
    30         <!-- 获取连接最大等待时间 -->
    31         <property name="maxWait" value="${maxWait}"></property>
    32         <!-- 这里配置提交方式,默认就是TRUE,可以不用配置 -->
    33         <property name="defaultAutoCommit" value="true" />
    34         <!-- 验证连接有效与否的SQL,不同的数据配置不同 -->
    35         <property name="validationQuery" value="select 1 " />
    36         <!--通过别名的方式配置扩展插件,监控统计用的filter:stat  日志用的filter:log4j  防御sql注入的filter:wall-->
    37         <property name="filters" value="stat,log4j" />
    38         <property name="proxyFilters">
    39             <list>
    40                 <ref bean="stat-filter" />
    41                 <ref bean="log-filter"/>
    42             </list>
    43         </property>
    44     </bean>
    45 
    46     <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    47     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    48         <property name="dataSource" ref="dataSource" />
    49         <!-- 自动扫描mapping.xml文件 -->
    50         <property name="mapperLocations" value="classpath:mapping/**/*.xml"></property>
    51     </bean>
    52 
    53     <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    54     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    55         <property name="basePackage" value="com.goku.druid.demo.mapper" />
    56         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    57     </bean>
    58 
    59     <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    60     <bean id="transactionManager"
    61           class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    62         <property name="dataSource" ref="dataSource" />
    63     </bean>
    64 
    65     <!-- 使用annotation定义事务 -->
    66     <tx:annotation-driven transaction-manager="transactionManager"
    67                           proxy-target-class="true" />
    68 
    69     <!--监控统计-->
    70     <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
    71         <property name="slowSqlMillis" value="10000" />
    72         <property name="logSlowSql" value="true" />
    73     </bean>
    74 
    75     <!--日志-->
    76     <bean id="log-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
    77         <property name="statementExecutableSqlLogEnable" value="true" />
    78     </bean>
    79 
    80 </beans>
    View Code

     Druid的监控

    1.在web.xml里面添加如下配置,用于druid的监控

    1     <servlet>
    2         <servlet-name>DruidStatView</servlet-name>
    3         <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    4     </servlet>
    5     <servlet-mapping>
    6         <servlet-name>DruidStatView</servlet-name>
    7         <url-pattern>/druid/*</url-pattern>
    8     </servlet-mapping>

    2.运行程序 打开 http://localhost:8090/druid/index.html 查看运行情况:

    GITHUB

    github :  https://github.com/nbfujx/learn-java-demo/tree/master/Goku.Single.DruidDemo

  • 相关阅读:
    组建小型局域网
    如何解决无法登陆微软账号
    常用网页收录入口
    Google正确搜索方法
    电脑无法识别U盘(usb类外接设备)的解决办法
    如何生成一副Poker
    Camtasia Studio8使用教程
    windows蓝屏代码大全及常见蓝屏解决方案
    [bzoj3712][PA2014]Fiolki
    [NOI2018]归程
  • 原文地址:https://www.cnblogs.com/nbfujx/p/7686634.html
Copyright © 2011-2022 走看看