Я хочу использовать два менеджера транзакций следующим образом
<bean id="transactionManagerReadOnly" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactoryReadOnly" />
</bean>
<bean id="transactionManagerReadWrite" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactoryReadWrite" />
</bean>
и в моем коде присутствуют теги tx:annotation-driven, например, следующие
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManagerReadWrite"/>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManagerReadOnly"/>
но я где-то читал, что должен присутствовать только один tx:annotation-driven и ссылаться на другой менеджер транзакций, указав в теге @Transaction, например, следующее
@Transactional("transactionManagerReadWrite")
@Transactional("transactionManagerReadOnly")
Ниже приведены мои вопросы и запросы
- Какой менеджер транзакций считается допустимым кандидатом для
@Transactional
, если в файле конфигурации присутствуют два менеджера транзакций и два тегаtx:annotation-driven
, если мы не указываем имя менеджера транзакций явно в аннотации@Transactional
? - Каким будет режим второго менеджера транзакций, если в приложении рекомендуется иметь только один тег
tx:annotation-driven
, а режим мы указываем только в тегеtx:annotation-driven
? то есть режим Springs по умолчанию - это режим прокси, и я хочу использовать два менеджера транзакций с режимом аспекта. - Как указать режим
aspectj
для второго менеджера транзакций, если мы можем использовать только один тегtx:annotation-driven
, а режим по умолчанию - режимproxy
весной?
<tx:annotation-driven />
, и то, что вы указываете там, является используемым менеджером транзакций по умолчанию. Вы также указываете режим для использования (прокси или аспект), это будет применяться ко всем аннотациям@Transactional
. По умолчанию будет использоваться диспетчер tx по умолчанию, если он не указан в аннотации@Transactional
. - person M. Deinum   schedule 25.09.2019@Transactional
аннотации либо прокси, либо аспект, и не имеет ничего общего с тем, сколько у вас tx-менеджеров. - person M. Deinum   schedule 25.09.2019@Transactional
, либо по умолчанию, если он не указан. Это не зависит от того, какие и сколько tx-менеджеров у вас есть, какой режим применяется. Тот факт, что существует только один аспект транзакции, также является причиной того, что может быть только один<tx:annotation-driven />
, поскольку он будет настраивать глобально используемый (по умолчанию) менеджер транзакций. - person M. Deinum   schedule 25.09.2019