Spring TX 事务扩展点

  • 方法一:注册回调函数
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
     
	@Override
	public void suspend() {
     
	}

	@Override
	public void resume() {
     
	}

	@Override
	public void flush() {
     
	}

	@Override
	public void beforeCommit(boolean readOnly) {
     
	}

	@Override
	public void beforeCompletion() {
     
	}

	@Override
	public void afterCommit() {
     
	}

	@Override
	public void afterCompletion(int status) {
     
	}
});
  • 方法二:监听事务中发布的事件
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
private void onEvent(MyApplicationEvent event) {
     
    
}
public enum TransactionPhase {
     

	/**
	 * Fire the event before transaction commit.
	 * @see TransactionSynchronization#beforeCommit(boolean)
	 */
	BEFORE_COMMIT,

	/**
	 * Fire the event after the commit has completed successfully.
	 * 

Note: This is a specialization of {@link #AFTER_COMPLETION} and * therefore executes in the same after-completion sequence of events, * (and not in {@link TransactionSynchronization#afterCommit()}). * @see TransactionSynchronization#afterCompletion(int) * @see TransactionSynchronization#STATUS_COMMITTED */ AFTER_COMMIT, /** * Fire the event if the transaction has rolled back. *

Note: This is a specialization of {@link #AFTER_COMPLETION} and * therefore executes in the same after-completion sequence of events. * @see TransactionSynchronization#afterCompletion(int) * @see TransactionSynchronization#STATUS_ROLLED_BACK */ AFTER_ROLLBACK, /** * Fire the event after the transaction has completed. *

For more fine-grained events, use {@link #AFTER_COMMIT} or * {@link #AFTER_ROLLBACK} to intercept transaction commit * or rollback, respectively. * @see TransactionSynchronization#afterCompletion(int) */ AFTER_COMPLETION }

你可能感兴趣的:(spring,spring)