我在事务范围内运行了一个方法A:
问题是在A方法提交之前运行此任务(我无法控制的事情)时,它没有看到所需的状态发生变化,因为在方法A级事务结束之前它不会阻塞。
使用spring bean和@ Transactional-annotated方法运行任务,如下所示:
@Service
public class TransactionalProcessingAdapter implements ProcessingAdapter {
@Override
@Transactional
public void execute(ProcessingAdaptedMethod processingAdapter) {
processingAdapter.execute();
}
}
我做错了什么?谢谢!
答案 0 :(得分:0)
事情是Spring事务是线程限制的 - 例如,事务只在其初始线程中可见。 ThreadLocal用于实现该属性。
您可能希望在Spring中实现自己的TransactionSynchronizationManager并将其注入。使用类似InheritableThreadLocal而不是ThreadLocal。