Java连接池需通过HikariCP、Druid等库配置初始化数据源后获取连接;HikariCP性能最优,Druid功能丰富带监控;数据源应单例复用,连接须用try-with-resources关闭,配置应外置。

在 Java 中,连接池对象通常不直接 new 出来,而是通过连接池实现库(如 HikariCP、Druid、Apache DBCP2)提供的配置类或构建器初始化,再调用其方法获取连接。核心思路是:先配置数据源,再创建数据源实例,最后用 getConnection() 获取连接。
使用 HikariCP 初始化并获取连接
HikariCP 是目前性能最好、最常用的连接池,推荐优先选用。
- 添加 Maven 依赖:
<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>5.0.1</version> </dependency>
- 代码中初始化 HikariDataSource 并获取连接:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("root");
config.setPassword("123456");
config.setDriverClassName("com.mysql.cj.jdbc.Driver");
// 可选:设置连接池大小等
config.setMaximumPoolSize(10);
config.setMinimumIdle(2);
config.setConnectionTimeout(30000);
HikariDataSource dataSource = new HikariDataSource(config);
// 获取连接(会从池中取,非每次都新建)
try (Connection conn = dataSource.getConnection()) {
// 使用 conn 执行 SQL...
} catch (SQLException e) {
e.printStackTrace();
}
使用 Druid 初始化并获取连接
Druid 是阿里开源的连接池,功能丰富,自带监控和 SQL 防火墙能力。
- Maven 依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.20</version> </dependency>
- 代码初始化方式(两种常用):
方式一:通过 DruidDataSource 直接 set 属性
立即学习“Java免费学习笔记(深入)”;
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("123456");
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setInitialSize(5);
dataSource.setMaxActive(20);
try (Connection conn = dataSource.getConnection()) {
// ...
}
方式二:加载 properties 配置文件(更推荐用于生产)
Properties props = new Properties();
props.load(DruidExample.class.getResourceAsStream("/druid.properties"));
DruidDataSource dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(props);
注意事项与最佳实践
- 数据源应全局单例:不要每次操作都 new 一个 DataSource,它本身是线程安全且设计为长期复用的;通常放在 Spring 容器中管理,或用 static + 懒汉式单例。
-
务必关闭连接:使用 try-with-resources 或显式调用
conn.close()—— 这只是归还连接到池,不是销毁物理连接。 - 避免硬编码配置:数据库地址、账号密码等应从配置文件或环境变量读取,尤其在生产环境。
-
注意驱动类名变化:MySQL 8+ 推荐用
com.mysql.cj.jdbc.Driver,旧版本用com.mysql.jdbc.Driver(已废弃)。
Spring Boot 中更简洁的方式(补充参考)
如果你用 Spring Boot,无需手动 new 数据源,只需加依赖 + 配置 application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 12
然后通过 @Autowired DataSource dataSource 注入即可使用 getConnection()。


















