MyBatis Druid 多数据源 、Spring Boot 集成 Druid—— 概念与实战
-
Druid介绍
- Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和 SQL 解析器组成
- 该项目主要是为了扩展 JDBC 的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL 信息、SQL 性能收集、SQL 注入检查、SQL 翻译等,程序员可以通过定制来实现自己需要的功能。
- Druid 不仅是一个数据库连接池,它还包含一个 ProxyDriver,一系列内置的 JDBC 组件库,一个 SQL Parser。在 Javad 的世界中 Druid 是目前最好的数据库连接池,在功能、性能、扩展性上都超过其他数据库连接池,包括 DBCP、C3P0、BoneCP、Proxool、JBoss、DataSource。
-
用途
- 替换其他 Java 连接池,Druid 提供了一个高效、功能强大、可扩展性好的数据库连接池。可以监控数据库访问性能,Druid 内置提供了一个功能强大的 StatFilter 插件,能够详细统计 SQL 的执
行性能,这对于线上分析数据库访问性能有帮助。 - 数据库密码加密。直接把数据库密码写在配置文件中,容易导致安全问题。DruidDruiver 和 DruidDataSource 都支持 PasswordCallback。
- SQL 执行日志,Druid 提供了不同的 LogFilter,能够支持 Common-Logging、Log4j 和JdkLog,可以按需要选择相应的 LogFilter,监控应⽤用的数据库访问情况。
- 扩展 JDBC,如果对 JDBC 层有编程的需求,可以通过 Druid 提供的 Filter 机制,很方便编写JDBC 层的扩展插件。
- 替换其他 Java 连接池,Druid 提供了一个高效、功能强大、可扩展性好的数据库连接池。可以监控数据库访问性能,Druid 内置提供了一个功能强大的 StatFilter 插件,能够详细统计 SQL 的执
-
初始化Spring Boot项目
-
解压之后用IDEA打开 —— 项目目录总览(pom.xml文件未显示)
-
pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>wen</groupId> <artifactId>druid</artifactId> <version>0.0.1-SNAPSHOT</version> <name>druid</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
值得一提的是:pom文件有个log4j文件包,这个必须要添加,因为后面的druid配置文件内有个log4j的值,不加上的话会导致配置文件出错而连不上druid
-
application.properties:
# 主数据源,默认的 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone = GMT spring.datasource.username=root spring.datasource.password= spring.datasource.filters=stat,wall,log4j # 更多数据源 custom.datasource.names=ds1,ds2 custom.datasource.ds1.driver-class-name=com.mysql.cj.jdbc.Driver custom.datasource.ds1.url=jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone = GMT custom.datasource.ds1.username=root custom.datasource.ds1.password= custom.datasource.ds1.filters=stat,wall,log4j custom.datasource.ds2.driver-class-name=