Как использовать советники по транзакциям с аннотациями? - PullRequest
0 голосов
/ 28 ноября 2010

supose У меня есть следующий пример:

@Transactional(propagation=Propagation.SUPPORTS, readOnly=true)
public class MyServiceImpl implements MyService {

    ...

    @Transactional(propagation=Propagation.REQUIRED, readOnly=false)
    public TransactionResponse addMyEntity(MyEntity e) throws SQLException{
        ...
    }

    ...
}

А в моем приложении текст:

<tx:annotation-driven transaction-manager="txManager" />

Хорошо, теперь я хочу добавить перехватчик после отката транзакции, если выброшено исключение SQLException. Как я могу это сделать?

Заранее спасибо

EDIT

Я попытаюсь уточнить, что я пытаюсь сделать:

У меня есть WS, который сохраняет некоторую информацию о БД и возвращает ответ (логическое значение isOk и сообщение об ошибке, если что-то пошло не так)

Всякий раз, когда возникает исключение, мне нужно:

  • Откат транзакции
  • Создайте ответ с сообщением об ошибке и верните его клиенту.

Это похоже на попытку / ловить прокси транзакции Spring

1 Ответ

1 голос
/ 28 ноября 2010

Используйте атрибут order tx:annotation-driven и перехватчика, который вы будете использовать. Таким образом, вы указываете, какой из них работает раньше другого. См. AOP AspectJ, порядок заказа , раздел

...