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