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

  • 相关阅读:
    array and ram
    char as int
    pointer of 2d array and address
    Install SAP HANA EXPRESS on Google Cloud Platform
    Ubuntu remount hard drive
    Compile OpenSSL with Visual Studio 2019
    Install Jupyter notebook and tensorflow on Ubuntu 18.04
    Build OpenCV text(OCR) module on windows with Visual Studio 2019
    Reinstall VirtualBox 6.0 on Ubuntu 18.04
    Pitfall in std::vector<cv::Mat>
  • 原文地址:https://www.cnblogs.com/nbfujx/p/7686634.html
Copyright © 2011-2022 走看看