美好时光!
Spring 的事务管理器是否使用某种调度程序在超时时使事务失效(如果是,调度程序的检查周期是多少?)还是有另一种机制?
不,超时仅在数据库交互时检查,没有单独的线程来强制执行它。因此,停止的连接将不会被释放,并且超时异常可能会在实际截止日期之后很长时间发生。
如果您想确保连接不会以这种方式卡住,请使用连接池功能,例如 c3p0 的 unreturnedConnectionTimeout 或 bonecp 的 closeConnectionWatch。
来自 Spring 3.0 文档:
事务超时默认为底层事务系统的默认超时,如果不支持超时则无
这适用于@Transactional
注释和<tx:advice>
切点。