У меня есть приложение springframework, в котором я хотел бы добавить прослушиватель транзакций к транзакции, которая в настоящее время выполняется. Мотивация заключается в том, чтобы инициировать действие post commit, которое уведомляет о нижестоящих системах. Я использую @Transactional для переноса транзакции вокруг некоторого метода службы - именно там я хочу создать/зарегистрировать прослушиватель транзакций. Я хочу сделать что-то вроде "следующего".
public class MyService {
@Transaction
public void doIt() {
modifyObjects();
// something like this
getTransactionManager().registerPostCommitAction(new
TransactionSynchronizationAdapter() {
public void afterCommit() {
notifyDownstream();
}
});
}
}
Spring имеет интерфейс TransactionSynchronization и класс адаптера, который кажется именно тем, что я хочу; однако сразу не ясно, как динамически регистрироваться либо с текущей транзакцией, либо с менеджером транзакций. Я бы предпочел не подклассифицировать JtaTransactionManager, если я могу его избежать.
Q: Кто-нибудь сделал это раньше.
Q: Каков самый простой способ регистрации моего адаптера?