Я пытаюсь настроить XA/распределенные транзакции для весеннего пакетного/весеннего облачного приложения, настроенного с весенней загрузкой.
Я добавил следующую зависимость, надеясь полагаться на автоматическую настройку весенней загрузки:
compile("org.springframework.boot:spring-boot-starter-jta-atomikos")
Однако следующие два класса вызывают настройку двух диспетчеров транзакций:
org.springframework.cloud.task.configuration.SimpleTaskConfiguration
org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration
См. следующее сообщение:
2016-07-18 21:46:19.952 INFO 18995 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'transactionManager' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration; factoryMethodName=transactionManager; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/batch/core/configuration/annotation/SimpleBatchConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.cloud.task.configuration.SimpleTaskConfiguration; factoryMethodName=transactionManager; initMethodName=null; destroyMethodName=(inferred); defined in org.springframework.cloud.task.configuration.SimpleTaskConfiguration]
а затем, поскольку настроен PlatformTransactionManager
с именем transactionManager
, моя автоматическая настройка атомикоса не подхватывается:
AtomikosJtaConfiguration did not match
- @ConditionalOnClass classes found: org.springframework.transaction.jta.JtaTransactionManager,com.atomikos.icatch.jta.UserTransactionManager (OnClassCondition)
- @ConditionalOnMissingBean (types: org.springframework.transaction.PlatformTransactionManager; SearchStrategy: all) found the following [transactionManager] (OnBeanCondition)
Может ли кто-нибудь помочь мне предотвратить это неправомерное принудительное использование bean-компонентов transactionManager
, вызванное двумя вышеуказанными классами?