Spring的DataSourceUtils定义了一个应用事务超时的method,而没有明确指定它。 Javadoc读到:
public static void applyTransactionTimeout(Statement stmt,
DataSource dataSource)
throws SQLException
Apply the current transaction timeout, if any, to the given JDBC Statement object.
我的问题是:
谢谢。
答案 0 :(得分:0)
价值来自当前交易(如果有)(即@Transactional(..., timeout = ...)
)。
Spring的DataSourceUtils.getConnection()
不代理它返回的连接,因此Spring无法对这些连接自动创建的Statement
应用任何配置。
实际上,在Spring中使用JDBC的推荐方法是通过JdbcTemplate
来实现。 JdbcTemplate
完全可以识别事务,因此如果需要,它会在内部调用相关方法。
但是如果您需要使用原始JDBC Connection
,则可以使用此方法根据@Transactional(...)
等配置它们。