Called after the main work of the transaction is complete, just before the transaction is prepared. The transaction is still considered active when this method is called, although calls should not be made to independent {@link Service}s. If the transaction has multiple transaction listeners registered, the order in which the listeners are called is unspecified.
If this method throws an exception, then the transaction will be aborted, and the exception will be treated as if it were thrown by the main body of the transaction.
This method will not be called if the transaction is aborted before it reaches the preparation stage, including if an earlier call to this method on another listener throws an exception or aborts the transaction.
@throws RuntimeException if the transaction should be aborted