Spring @Transactional применяется и как динамический Jdk-прокси, и как аспектj аспекта

Я нахожусь в процессе добавления декларативных транзакций Spring с помощью аннотации @Transactional в существующий проект Java.

Когда я запустил в проблему (не связанную с этим вопросом), я включил полное ведение журнала отладки. Любопытно, что я заметил следующее:

17:47:27,834 DEBUG HibernateTransactionManager:437 - Found thread-bound Session [org.hibernate.impl.SessionImpl@10ed8a8e] for Hibernate transaction
17:47:27,845 DEBUG HibernateTransactionManager:470 - Participating in existing transaction
17:47:27,865 DEBUG AnnotationTransactionAttributeSource:106 - Adding transactional method 'updateUserProfile' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
17:47:27,875 DEBUG AnnotationTransactionAspect:321 - Skipping transactional joinpoint [se.myservice.UserService.updateUserProfile] because no transaction manager has been configured

После некоторой отладки, Я обнаружил, что первые три записи журнала, в которых говорится, что он нашел сессию с привязкой к потоку и использует эту транзакцию, создается JdkDynamicAopProxy в моем классе UserService.

Последнее сообщение журнала выглядит тревожным. Он вызывается в точке соединения перед выполнением метода. При поиске источника AnnotationTransactionAspect выдает это сообщение, если не установлен менеджер транзакций. В этом случае, потому что Spring никогда не выполняет никакого внедрения зависимости в этом аспекте.

Мне кажется, что применяются два разных «стиля» транзакций: динамический прокси и аспект. Единственная конфигурация, связанная с транзакциями, которая у меня есть:

<tx:annotation-driven transaction-manager="txManager" />

Мы используем AspectJ в проекте, но в моем файле aop.xml не зарегистрирован аспект AnnotationTransactionAspect. Мы используем Spring 3.0.2.RELEASE. 1282 Должен ли я быть встревожен этим? Spring регистрирует этот аспект для меня? Не следует ли использовать на основе аннотаций при использовании AspectJ?

5
задан Sean Patrick Floyd 26 August 2010 в 10:05
поделиться