Я использую аннотацию @Configuration
для конфигурации Spring вместо XML-файла. Я настраиваю 2 источника данных с разными фабриками сеансов и разными менеджерами транзакций. Я застрял с проблемой здесь для @EnableTransactionManagement
аннотации. Я прочитал в своей документации, что,
@EnableTransactionManagement
более гибкий; это отступит к
поиск по типу для любого компонента PlatformTransactionManager
в
контейнер. Таким образом, имя может быть «txManager», «TransactionsManager» или
«тм»: это просто не имеет значения.
Это означает, что любое имя, которое я даю методу, всегда будет искать метод, который возвращает объект PlatformTransactionManager
, пока у меня есть 2 менеджера транзакций. Теперь проблема в том, что когда я тестирую этот класс, он выдает ошибку:
org.springframework.beans.factory.NoSuchBeanDefinitionException
: Не определен уникальный компонент типа [org.springframework.transaction.PlatformTransactionManager
]: ожидается один компонент, но найден 2
Я даже пытался иметь 2 разных класса конфигурации, но тщетно. В конфигурации xml это было не так. Я зарегистрировал оба менеджера транзакций с двумя тегами <tx:annotation-driven transaction-manager="" />
, и он работал нормально. Но не в состоянии сделать то же самое здесь с аннотациями.
Что мне делать, если я хочу настроить 2 источника данных с 2 различными менеджерами транзакций в классе конфигурации с аннотацией Spring?