Java 如何在Spring Boot应用程序中配置自定义数据库连接超时?
在我的Spring boot(2.0.7版本)应用程序中,我无法手动设置/覆盖application.properites文件中数据库连接的超时。我正在使用JPA、Hibernate、Tomcat连接池和Postgres 我进行了彻底的研究,发现了非常相似的问题:Java 如何在Spring Boot应用程序中配置自定义数据库连接超时?,java,spring,spring-boot,jdbc,Java,Spring,Spring Boot,Jdbc,在我的Spring boot(2.0.7版本)应用程序中,我无法手动设置/覆盖application.properites文件中数据库连接的超时。我正在使用JPA、Hibernate、Tomcat连接池和Postgres 我进行了彻底的研究,发现了非常相似的问题: 我之所以提出新问题,是因为上述问题都没有公认的答案,也没有确定的工作解决方案。我尝试在application.properties文件中包含每个建议的解决方案,但没有成功 此外,如问题2所述:如果我在@Transactiona
- spring.jpa.properties.javax.persistence.query.timeout=4000
- spring.jdbc.template.query超时=4
- spring.transaction.defaultTimeout=4
- spring.datasource.tomcat.validation查询超时=4
提前感谢。至少有3个超时需要配置:
@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;
}
如果不想为数据源配置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
根据Spring 2.0.7 properties(),属性键是Spring.transaction.default-timeout,而不是Spring.transaction.defaultTimeout。请尝试并告知我们。感谢您的建议。不幸的是,结果是一样的——连接没有在指定的时间内超时。此外,我正在试图找到一个解决方案,它包含所有连接,而不仅仅是事务。您找到解决方案了吗?在这里面临同样的问题…不幸的是没有。我没有发现任何新的东西。
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