返回
Druid 数据源与密码加密之 SpringBoot 2.7 实战基础
后端
2023-09-25 13:14:39
在上一篇文章中,我们集成了 MyBatis Plus,从而实现了一组增删改查接口。当我们启动服务时,可以从控制台中看到,SpringBoot 默认使用 Hikari 作为数据库连接池,而 Hikari 的性能非常出色。在国内,还有一款性能同样不俗的数据库连接池,它就是 Druid。
1. Druid 简介
Druid 是阿里巴巴开源的一款高性能、高可用的 Java 数据库连接池,它具有以下特点:
- 高性能:Druid 采用非阻塞异步 IO,大幅度提升了数据库连接的吞吐量和响应速度。
- 高可用性:Druid 支持故障自动检测和恢复,确保数据库连接的稳定性。
- 强大的监控功能:Druid 提供了丰富的监控指标,方便我们对数据库连接池进行监控和管理。
- 易于使用:Druid 的配置非常简单,只需要在 application.yml 中进行少量配置即可。
2. 集成 Druid 数据源
首先,我们需要在 Maven 项目中添加 Druid 的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.12</version>
</dependency>
添加依赖后,我们就可以在 application.yml 中配置 Druid 数据源了:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# 替换为您自己的数据库配置
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: 123456
3. 密码加密
在实际开发中,我们通常不会将密码明文存储在配置文件中,而是会使用某种加密算法对密码进行加密。Druid 支持使用多种加密算法对密码进行加密,我们只需要在 application.yml 中配置加密算法和加密后的密码即可。
例如,我们可以使用 AES 加密算法对密码进行加密:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# 替换为您自己的数据库配置
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: ${druid.password}
druid:
password: ${druid.password}
# 使用 AES 加密算法对密码进行加密
password-encrypt: aes
# 加密后的密码
password-encrypt-key: 123456
这样,我们的密码就得到了加密,即使有人获得了 application.yml 文件,也无法看到真正的密码。
4. 测试 Druid 数据源
配置好 Druid 数据源后,我们可以使用 JUnit 对数据源进行测试。
@SpringBootTest
class DruidDataSourceTest {
@Autowired
private DataSource dataSource;
@Test
void testConnection() throws SQLException {
Connection connection = dataSource.getConnection();
// 执行查询操作
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from user");
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
resultSet.close();
statement.close();
connection.close();
}
}
运行测试,如果输出结果正确,则说明 Druid 数据源配置成功。
5. 总结
本文详细介绍了 Druid 数据源的配置、密码加密以及与 SpringBoot 2.7 的集成。通过使用 Druid,我们可以获得高性能、高可用的数据库连接池,从而提升应用程序的性能和稳定性。