Я «унаследовал» старое устаревшее приложение Spring. В настоящее время он использует Spring 2.5 (только что обновил его один раз), и я собираюсь обновить его до Spring 3.
Я понимаю большую часть конфигурации приложения. Есть только одна часть, в которой я «не на 100%». Я могу примерно предположить, что это может означать, но мне нужно быть абсолютно уверенным, поэтому я публикую этот вопрос:
Вот фрагмент конфигурации (зависит от диспетчера транзакций, управляемого аннотациями, который здесь не показан):
<aop:config>
<aop:advisor pointcut="execution(* *..ProductManager.*(..))"
advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="save*" />
<tx:method name="*" read-only="false" />
</tx:attributes>
</tx:advice>
Мои конкретные два вопроса:
- Что означает «выполнение (* ..ProductManager.(..))» (я понимаю язык pointcut)
- В разделе атрибутов совета мы говорим применить транзакцию ко всем методам, связанным с сохранением *, и для всего, что только для чтения является ложным. Может ли кто-нибудь объяснить, почему эта настройка имеет смысл? Является ли это аддитивным и эффективно говорящим, для всех методов с поддержкой транзакций (т.е. просто методов сохранения *) я также хочу, чтобы эти методы НЕ были транзакциями только для чтения. Или он применяет что-то другое (например, некоторую форму поддержки транзакций) к каждому методу инклюзивного фильтра транзакций (определенному в pointcut).
Спасибо за любые разъяснения. Пожалуйста, без общих ответов - мне нужно конкретное объяснение этого.