пример весеннего декларативного откатывания? - PullRequest
1 голос
/ 07 октября 2010

хочу пример декларативного управления транзакциями весной aop ........

На самом деле Здесь

<aop:config>
    <aop:advisor advice-ref="addAdvice" pointcut="execution(* com.DAO.*.*(..))"/>
</aop:config>
<tx:advice id="addAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="add*" propagation="REQUIRED" rollback-for="" />
    </tx:attributes>
</tx:advice>

Итакчто я хочу написать на самом деле rollback-for = "", есть какой-либо метод или любой другой?а если метод, то где он будет помещен?

Ответы [ 2 ]

5 голосов
/ 07 октября 2010

в rollback-for вы указываете имя исключения. Например, если вы хотите откат для your.pkg.NoProductInStockException, вы пишете

rollback-for="your.pkg.NoProductInStockException"

Это приведет к откату транзакции, если она обнаружит исключение, соответствующее указанному. Если генерируется исключение, которое не совпадает, оно передается вызывающей стороне службы или помещается в TransactionRolledBackException

Документация по транзакции объясняет:

Рекомендованный способ указать инфраструктуре транзакций Spring Framework на то, что работа транзакции должна быть откатана, - вызвать исключение из кода, который в данный момент выполняется в контексте транзакции. Код инфраструктуры транзакций Spring Framework будет перехватывать любое необработанное исключение по мере того, как он будет пузыриться в стеке вызовов, и определять, отмечать ли транзакцию для отката.

В конфигурации по умолчанию код инфраструктуры транзакций Spring Framework помечает транзакцию для отката только в случае выполнения, непроверенных исключений; то есть, когда выброшенное исключение является экземпляром или подклассом RuntimeException. (Ошибки также по умолчанию приводят к откату). Проверенные исключения, которые вызываются из транзакционного метода, не приводят к откату в конфигурации по умолчанию.

Вы можете точно указать, какие типы исключений помечают транзакцию для отката, включая проверенные исключения.

0 голосов
/ 07 октября 2010

По умолчанию не нужно делать это для непроверенных исключений. Если вы выбрасываете непроверенное исключение внутри метода, тогда вы должны использовать атрибут rollback-for. Вы можете использовать стиль регулярного выражения, например: * InStockException

...