@Async 只负责换线程执行,不负责事务一致性、上下文复制和异常可靠投递。 生产环境里因此丢失数据、丢日志、吞异常的情况反复出现,根治只能靠明确事务边界、装饰线程池和持久化关键任务。 事务上下文不会随 @Async 传递到子线程 在 Spring 中,@Async 方法默认使用 SimpleAsyncTaskExecutor 或自定义的 ThreadPoolTaskExecutor 执行。事务由 TransactionSynchronizationManager 绑定在当前线程的 ThreadLocal 上……

阅读全文