Вы можете указать, какой менеджер tx использовать с @Transactional
, используя атрибут value
:
Значение квалификатора для указанного
сделка.
Может использоваться для определения цели
менеджер транзакций, соответствующий
значение квалификатора (или имя бина)
определенный PlatformTransactionManager
определение бина.
Например:
@Transactional("txManager1");
В качестве альтернативы, вы можете использовать более явный TransactionProxyFactoryBean
, который дает вам более точный контроль над тем, какие объекты передаются через какие менеджеры tx. При этом по-прежнему используются аннотации, но он не обнаруживает компоненты автоматически, он настраивается явно для каждого компонента.
Обычно это не проблема, но не имеет смысла иметь несколько менеджеров транзакций, если у вас нет веских причин для этого. Если вам нужны два tx-менеджера, обычно лучше посмотреть, сможете ли вы обойтись одним. Например, если на вашем сервере приложений настроено два источника данных, вы можете включить оба в один JtaTransactionManager, а не в два отдельных JpaTransactionManager
или DataSourceTransactionmanagers
.