08-02-2023, 08:10 AM
I am using `@Configuration` annotation for configuration of spring instead of xml file. I am configuring 2 datasources with different session factory and different transaction managers. I am stuck with a problem here for `@EnableTransactionManagement` annotation. I read in its documentation that,
> `@EnableTransactionManagement` is more flexible; it will fall back to a
> by-type lookup for any `PlatformTransactionManager` bean in the
> container. Thus the name can be "txManager", "transactionManager", or
> "tm": it simply does not matter.
This means whatever name I give to method, it will always search for the method which returns `PlatformTransactionManager` object while I have 2 transactionmanagers. Now the problem is, when I test this class, it gives me error:
>`org.springframework.beans.factory.NoSuchBeanDefinitionException`: No unique bean of type [`org.springframework.transaction.PlatformTransactionManager`] is defined: expected single bean but found 2
I even tried to have 2 different Configuration classes but in vain. In xml configuration, this was not the case. I registered my both transaction managers with two `<tx:annotation-driven transaction-manager="" />` tag and it worked fine. But not able to do same here with annotations.
What should I do if I want to configure 2 datasources with 2 different transaction managers in Spring annotated configuration class?
> `@EnableTransactionManagement` is more flexible; it will fall back to a
> by-type lookup for any `PlatformTransactionManager` bean in the
> container. Thus the name can be "txManager", "transactionManager", or
> "tm": it simply does not matter.
This means whatever name I give to method, it will always search for the method which returns `PlatformTransactionManager` object while I have 2 transactionmanagers. Now the problem is, when I test this class, it gives me error:
>`org.springframework.beans.factory.NoSuchBeanDefinitionException`: No unique bean of type [`org.springframework.transaction.PlatformTransactionManager`] is defined: expected single bean but found 2
I even tried to have 2 different Configuration classes but in vain. In xml configuration, this was not the case. I registered my both transaction managers with two `<tx:annotation-driven transaction-manager="" />` tag and it worked fine. But not able to do same here with annotations.
What should I do if I want to configure 2 datasources with 2 different transaction managers in Spring annotated configuration class?