@Transactional timeout默认值

时间:2017-10-19 09:56:41

标签: timeout spring-transactions

在Spring文档中,Spring JpaTransactionManager默认超时为-1。因此,如果我们不手动指定任何@Transactional超时,则应采用默认超时值(-1)。这是什么意思?在事务超时多少秒之后呢?

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