Запрос о конфигурации и распространении Spring Transaction - PullRequest
0 голосов
/ 25 января 2012

В Spring docs написано

Наиболее важные концепции, которые необходимо понять в отношении декларативной поддержки транзакций Spring Framework, заключаются в том, что эта поддержка включена через прокси-серверы AOP, и что рекомендация по транзакциям определяетсяметаданные (в настоящее время основанные на XML или аннотациях).

Так что, если я использую

<tx:annotation-driven proxy-target-class="true" order="100"/>

в файле конфигурации и не использую аннотацию @Transactional на моих бобах.Будет ли транзакция по-прежнему поддерживаться, так как я использую AOP, и в мои AOP должны быть встроены транзакции Interceptor, поэтому не нужно явно использовать аннотацию @Transactional.

Спасибо,

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Нет, вам все равно придется использовать аннотацию @Transactional.AOP-прокси используется только для внедрения кода, связанного с транзакцией, в ваш код.

1 голос
/ 25 января 2012
  1. используется для автоматического определения аннотации @Transactional. Так что она должна быть.Ссылка здесь .

  2. proxy-target-class = "true" решает, должен ли Spring использовать динамические прокси JDK или прокси на основе классов CGLIB.См. ссылку для получения дополнительной информации.В основном, если ваш класс реализует хотя бы один интерфейс, используются динамические прокси JDK.Если у вас есть класс MyDaoImpl, расширяющий MyDao, и в вашем сервисе вы вводите ссылку dao через MyDaoImpl myDaoImpl, динамические прокси JDK не будут работать, если аннотации находятся в вашем интерфейсе, поскольку прокси-серверы баз классов создаются с помощью proxy-target-class = "true"и аннотация @Transactional не наследуется.

  3. Причина, по которой ваши запросы работают без @Transactional, может заключаться в том, что вы используете шаблон гибернации, который открывает и закрывает транзакции внутренне.Начиная с Spring 3, рекомендуется вводить sessionFactory напрямую и не использовать шаблон гибернации.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...