在Spring文档中,Spring JpaTransactionManager默认超时为-1。因此,如果我们不手动指定任何@Transactional超时,则应采用默认超时值(-1)。这是什么意思?在事务超时多少秒之后呢?
答案 0 :(得分:0)
它根本不会超时。如果与数据库的连接冻结,您将获得持续数小时的交易。
例如,请参见org.springframework.jdbc.datasource.DataSourceTransactionManager
int timeout = determineTimeout(definition);
if (timeout != TransactionDefinition.TIMEOUT_DEFAULT) {
txObject.getConnectionHolder().setTimeoutInSeconds(timeout);
}
protected int determineTimeout(TransactionDefinition definition) {
if (definition.getTimeout() != TransactionDefinition.TIMEOUT_DEFAULT) {
return definition.getTimeout();
}
return this.defaultTimeout;
}
其中TransactionDefinition.TIMEOUT_DEFAULT
是-1