spring - DatasSourceBuilder 与 DriverManagerDataSource
问题描述
使用 DatasSourceBuilder 创建数据源
@Bean
DataSource dataSource() throws SQLException {
DatasSourceBuilder dataSource = DatasSourceBuilder.create();
dataSource.url("");
...
..
return dataSource.build();
}
使用 DriverManagerDataSource 创建数据源
@Bean
DriverManagerDataSource dataSource() throws SQLException {
DriverManagerDataSource dataSource = DriverManagerDataSource();
dataSource.setUrl("");
...
..
return dataSource;
}
我正在使用上述两种方法创建 jdbc
@Bean
public JdbcTemplate jdbcTemplate()
{
return new jdbcTemplate(dataSource());
}
我正在使用 jdbcTemplate,如下所示
void m1()
{
simpleJdbc = new simpleJdbc(jdbcTemplate);
simpleJdbc.execute(procedure)
}
所以我的问题是,如果我重复调用 m1() 50 次,那么在这两种情况下将创建多少个连接,即 DriverManagerDataSource 和 DatasSourceBuilder
解决方案
简单的答案是
DriverManagerDataSource
-> 与您调用该方法一样多的连接DataSourceBuilder
-> max poolsize 属性指定的连接数。
然而,真正的答案将取决于它。如果您调用m1
单个事务并调用它 50 次,那么它将以任何一种方式打开一个连接。打开的连接绑定到事务并重用。
话虽如此,您不应该将其DriverManagerDataSource
用于生产就绪的应用程序。它不是连接池,会在需要时打开连接,打开连接速度很慢,并且会创建无限数量的连接(取决于需要),因此如果您有 100 个需要连接的请求,它将打开 100 个连接(可能淹没你的数据库)。
仅用于DriverManagerDataSource
测试和演示,而不用于生产应用程序。
推荐阅读
- django - Django Rest Framework 中的序列化和权限
- python - “缺少 1 个必需的位置参数”和“意外关键字”
- batch-file - 尝试在 CMD 中的目录中删除文件夹但具有排除列表
- javascript - 无法打印出 json 中的属性
- c# - C# XML 多个子子项
- java - 在流中找到比最大值少几次的值
- terraform - 使用预安装的 Terraform 插件,而不是使用 terraform init 下载它们
- hashicorp-vault - 保险柜:如何创建秘密 ID
- java - 将资源文件夹中的 JAR 添加到 Maven 中的类路径
- python - Pandas:删除具有 nan 值索引的行