Spring AOP менеджер декларативных транзакций - PullRequest
1 голос
/ 03 августа 2011

В Spring менеджер декларативных транзакций: Моя конфигурация tx: метод:

<tx:method name="handle*" propagation="REQUIRED" no-rollback-for="java.lang.RuntimeException" rollback-for="java.lang.Exception" read-only="false"/>

Весна
Откат для документации: исключение (я), которые будут вызывать откат; разделенных запятой. Например, 'com.foo.MyBusinessException, ServletException'

Документация

no-rollback-for: Исключения, которые не инициируют откат; разделенных запятой. Например, 'com.foo.MyBusinessException, ServletException'

Я хочу выполнить откат диспетчера транзакций при перехвате java.lang.Exception, но исключение java.lang.RuntimeException приведет к фиксации.

Эта конфигурация работает для моего запроса? Каковы отношения : без отката и для отката в tx: метод tx: advice?

1 Ответ

0 голосов
/ 03 августа 2011

Короче говоря

Он делает то, что вы хотите.


Наиболее конкретное (без) правило возврата при возврате, которое соответствует исключению броска бетона, этовыигрыш.

Это означает, что если у вас есть иерархия исключений и правила отката

  • A (расширяет исключение) <- откат </li>
  • B расширяет A
  • C расширяет B <- нет отката </li>
  • D расширяет C
  • E расширяет D <- откат </li>
  • F расширяет E

Затем будет выполнено откат исключения, вызванного для классов A, B, E и F, а C и D. - 1026 *

(реализовано в RuleBasedTransactionAttribute.rollBackOn(Throwable ex))

...