[英]How to configure database configuration connection pooling with custom prefix in Spring Boot?
[英]How to configure custom database connection timeout in Spring Boot application?
在我的 Spring boot(2.0.7 RELEASE) 应用程序中,我无法手动设置/覆盖 application.properites 文件中数据库连接的超时。 我正在使用 JPA、Hibernate、Tomcat 连接池和 Postgres。
我已经彻底研究并发现了非常相似的问题:
我提出新问题的原因是因为上述问题都没有公认的答案,也没有确认的工作解决方案。 我尝试在我的 application.properties 文件中包含每个建议的解决方案,但没有成功。
此外,如问题 2 中所述:如果我在 @Transactional 注释中添加参数“timeout = someSeconds”,连接将按预期超时,但如果我尝试在 application.properties 中提取它,它会失败并超时默认时间。 这里的问题是我希望所有连接在给定时间内超时,而不仅仅是事务。
我在 application.properties 中尝试过的事情(所需的超时时间为 4 秒):
我读过的材料:
我错过了一些财产吗? 有谁知道为什么不能通过 application.properties 文件覆盖超时?
提前致谢。
至少有 3 个超时需要配置:
txManager.setDefaultTimeout(myDefaultValue);
就我而言,我使用的是 Oracle,我的 bean 配置如下:
@Bean
public HikariDataSource dataSource() {
HikariDataSource ds = new HikariDataSource();
ds.setDriverClassName(springDatasourceDriverClassName);
ds.setJdbcUrl(springDatasourceUrl);
ds.setUsername(springDatasourceUsername);
ds.setPassword(springDatasourcePassword);
ds.setDataSourceProperties(oracleProperties());
return ds;
}
Properties oracleProperties() {
Properties properties = new Properties();
properties.put("oracle.net.CONNECT_TIMEOUT", 10000);
properties.put("oracle.net.READ_TIMEOUT", 10000);
properties.put("oracle.jdbc.ReadTimeout", 10000);
return properties;
}
如果您不想为 DataSource 配置 bean(大多数人会这样做),您可以在 application.properties 中配置网络超时属性:
spring.datasource.hikari.data-source-properties.oracle.net.CONNECT_TIMEOUT=10000
spring.datasource.hikari.data-source-properties.oracle.net.READ_TIMEOUT=10000
spring.datasource.hikari.data-source-properties.oracle.jdbc.ReadTimeout=10000
取决于你的数据源,但你可以试试这个:
spring.datasource.hikari.max-lifetime=1000
spring.datasource.hikari.connection-timeout=1000
spring.datasource.hikari.validation-timeout=1000
spring.datasource.hikari.maximum-pool-size=10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.