可以在springboot设置几个数据库连接Connection,一直打开连接不关闭,随时调用吗
时间: 2024-02-26 14:59:35 浏览: 213
可以在Spring Boot中配置多个数据库连接Connection,并且保持连接不关闭,随时调用。这种做法一般称为连接池,它可以提高数据库连接的复用率和效率。常见的连接池有 `HikariCP`、`Druid` 等。以 `HikariCP` 为例,可以在 `application.properties` 文件中配置多个数据源,并开启连接池功能,例如:
```
# 主数据源
spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/primary_db
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
# 从数据源
spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/secondary_db
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver
# HikariCP 连接池配置
spring.datasource.hikari.pool-name=MyHikariCP
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-prepared-statements=true
```
在上面的配置中,我们配置了两个数据源,分别对应着 `primary_db` 和 `secondary_db` 数据库,然后通过 `spring.datasource.hikari` 开头的属性配置 HikariCP 连接池,启用连接池功能。在需要使用连接时,可以通过 `DataSource.getConnection()` 方法获取到一个 `Connection` 对象,并在使用完毕后,不需要手动关闭连接,连接会自动归还到连接池中。例如:
```
@Service
public class MyService {
@Autowired
@Qualifier("primaryDataSource")
private DataSource primaryDataSource;
@Autowired
@Qualifier("secondaryDataSource")
private DataSource secondaryDataSource;
public void doSomething() throws SQLException {
Connection conn1 = primaryDataSource.getConnection();
// 使用 conn1 进行数据库操作
Connection conn2 = secondaryDataSource.getConnection();
// 使用 conn2 进行数据库操作
// 不需要手动关闭连接,连接会自动归还到连接池中
}
}
```
在上面的代码中,我们使用 `@Qualifier` 注解指定具体的数据源,并调用 `getConnection()` 方法获取到一个 `Connection` 对象,然后在使用完毕后,不需要手动关闭连接,连接会自动归还到连接池中。
阅读全文