???????????????????????????????????????????????????????????????
TransactionSynchronizationManager.initSynchronization() line: 269
HibernateTransactionManager(AbstractPlatformTransactionManager).prepareSynchronization(DefaultTransactionStatus?? TransactionDefinition) line: 542
HibernateTransactionManager(AbstractPlatformTransactionManager).prepareTransactionStatus(TransactionDefinition?? Object?? boolean?? boolean?? boolean?? Object) line: 513
HibernateTransactionManager(AbstractPlatformTransactionManager).getTransaction(TransactionDefinition) line: 393
TransactionInterceptor(TransactionAspectSupport).createTransactionIfNecessary(PlatformTransactionManager?? TransactionAttribute?? String) line: 426
TransactionInterceptor(TransactionAspectSupport).invokeWithinTransaction(Method?? Class<?>?? InvocationCallback) line: 275
TransactionInterceptor.invoke(MethodInvocation) line: 96
ReflectiveMethodInvocation.proceed() line: 179
ExposeInvocationInterceptor.invoke(MethodInvocation) line: 92
ReflectiveMethodInvocation.proceed() line: 179
JdkDynamicAopProxy.invoke(Object?? Method?? Object[]) line: 213
$Proxy316.getOrderById(String) line: not available
OrderController.orderPay(String?? Model) line: 84
????????????????????????????????????????????????????initSynchronization()??
/**
* Activate transaction synchronization for the current thread.
* Called by a transaction manager on transaction begin.
* @throws IllegalStateException if synchronization is already active
*/
public static void initSynchronization() throws IllegalStateException {
if (isSynchronizationActive()) {
throw new IllegalStateException("Cannot activate transaction synchronization - already active");
}
logger.trace("Initializing transaction synchronization");
synchronizations.set(new LinkedHashSet<TransactionSynchronization>());
}
?????????synchronizations??set??new LinkedHashSet<TransactionSynchronization>()?????isSynchronizationActive()?true
/**
* Return if transaction synchronization is active for the current thread.
* Can be called before register to avoid unnecessary instance creation.
* @see #registerSynchronization
*/
public static boolean isSynchronizationActive() {
return (synchronizations.get() != null);
}
??????????????????????????μ??????????????????????????????????????????????????session????????????????????
SessionImpl.close() line: 402
SessionFactoryUtils.closeSession(Session) line: 167
SpringSessionSynchronization.afterCompletion(int) line: 138
TransactionSynchronizationUtils.invokeAfterCompletion(List<TransactionSynchronization>?? int) line: 168
HibernateTransactionManager(AbstractPlatformTransactionManager).invokeAfterCompletion(List<TransactionSynchronization>?? int) line: 1001
HibernateTransactionManager(AbstractPlatformTransactionManager).triggerAfterCompletion(DefaultTransactionStatus?? int) line: 976
HibernateTransactionManager(AbstractPlatformTransactionManager).processCommit(DefaultTransactionStatus) line: 806
HibernateTransactionManager(AbstractPlatformTransactionManager).commit(TransactionStatus) line: 730
TransactionInterceptor(TransactionAspectSupport).commitTransactionAfterReturning(TransactionAspectSupport$TransactionInfo) line: 483
TransactionInterceptor(TransactionAspectSupport).invokeWithinTransaction(Method?? Class<?>?? InvocationCallback) line: 290
TransactionInterceptor.invoke(MethodInvocation) line: 96
ReflectiveMethodInvocation.proceed() line: 179
ExposeInvocationInterceptor.invoke(MethodInvocation) line: 92
ReflectiveMethodInvocation.proceed() line: 179
JdkDynamicAopProxy.invoke(Object?? Method?? Object[]) line: 213
$Proxy316.getOrderById(String) line: not available
OrderController.orderPayInfo(String?? Model) line: 72