Druid数据源配置入门

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: Druid是什么Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
SQL Oracle 关系型数据库
浅谈mysql数据库迁移至国产化达梦数据库
项目要求mysql数据库数据需要转到达梦数据库,对于达梦数据库的了解尚且不多,一开始使用手动转SQL脚本,效率极低,非常容易出错。达梦数据库的资料实在有限,经过后期研究,发现原来DM已经有自己的数据迁移工具,使用之后非常方便。对mysql数据库转达梦数据库的操作流程做一个简要分享。
8151 0
浅谈mysql数据库迁移至国产化达梦数据库
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
机器人
智能电话机器人源码系统 的VAD和CNG
概观 VAD概述 VAD代表语音活动检测。它的作用是区分声音和其他任何东西,包括沉默。在VoIP应用中,它可以用作最小化传输的音频分组数量的工具。如果没有人说话,则可以停止音频数据包的流动,或者至少改变为低得多的舒适噪声数据包
1106 0
|
Oracle 关系型数据库 MySQL
MySQL中Sequence的使用
Oracle中Sequence可以使用,但在MySQL中没有序列实现,Oracle往MySQL迁移Sequence要怎么处理,是否有替代方案呢?
4678 0
|
Java 应用服务中间件 PHP
Nginx中的location匹配和rewrite重写跳转
1、常用的Nginx正则表达式 2、location 3、rewrite 4、rewrite实例
1932 0
Nginx中的location匹配和rewrite重写跳转
|
安全 网络协议 网络安全
HTTPS:保护你的网站免受中间人攻击的关键技术
【6月更文挑战第13天】HTTPS是抵御中间人攻击的关键技术,通过数据加密、身份验证和完整性保护保障网络安全。它基于SSL/TLS协议加密通信,防止数据被窃取或篡改,并使用数字证书确认服务器身份,避免伪造。要确保HTTPS安全,需使用有效数字证书,启用强制HTTPS,定期更新维护并限制访问范围。
1302 3
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
2315 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
1275 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
SQL 监控 druid
Druid数据库连接池的详细解析!分析说明数据库连接池Druid的参数配置和基本架构
本篇文章中介绍了数据库连接池Alibaba Druid的组成部分以及Druid的作用和基本配置。详细说明了Druid的基本架构,分别介绍了Druid中的实时节点,历史节点,查询节点,协调节点以及索引服务。通过本篇文章的学习,可以对数据库连接池Druid的参数配置和基本架构有清楚的认识。
3333 34
Druid数据库连接池的详细解析!分析说明数据库连接池Druid的参数配置和基本架构
|
JavaScript 前端开发 数据处理
【JavaScript】JavaScript数组全方位探索指南:深入理解数组特性
【JavaScript】JavaScript数组全方位探索指南:深入理解数组特性
236 1