Как исключить метод из сделки сделки? - PullRequest
2 голосов
/ 20 мая 2011

У меня есть следующее объявление:

  <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
      <tx:method name="*"/>
    </tx:attributes>
  </tx:advice>

Я обернул транзакции всеми методами из паттернов pointcut.Но я хочу, чтобы пользовательская упаковка была одним из методов.Имеет ли Spring.Net функциональность «черного списка» для tx: advice?

1 Ответ

2 голосов
/ 20 мая 2011

Не думаю, что в теге <tx:advice ... /> есть функция "черного списка". Совет по транзакции всегда будет применяться к соответствующим методам.

Я думаю, что цель списка <tx:attributes ... /> состоит в том, чтобы указать, какие атрибуты транзакции использовать (в зависимости от имени метода), чтобы не исключать методы из переноса в транзакции.

Если вас интересует только применение пользовательских свойств транзакции к определенному методу, это легко сделать. Например, если вы хотите установить read-only=true вместо значения по умолчанию false для VerySpecificMethod:

<tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
    <tx:method name="VerySpecificMethod" read-only="true"/>
    <tx:method name="*"/>
  </tx:attributes>
</tx:advice>

Имя первого соответствующего метода будет определять атрибуты транзакции, которые будут использоваться, поэтому теперь VerySpecificMethod будет выполняться в транзакции только для чтения. Другие методы будут использовать значение по умолчанию false.

...