返回

Druid 数据源与密码加密之 SpringBoot 2.7 实战基础

后端

在上一篇文章中,我们集成了 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,我们可以获得高性能、高可用的数据库连接池,从而提升应用程序的性能和稳定性。