Skip to content

Commit 94093a3

Browse files
committed
GH-175 - More defensive auto-configuration of MongoDB transactions.
We now opt out of defining bean definitions for MongoTransactionManager and TransactionTemplate if user defined. We also make sure to run before the EnableTransactionManagementConfiguration to make sure that will see our auto-configured MongoTransactionManager.
1 parent c46b9b9 commit 94093a3

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbTransactionAutoConfiguration.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
package org.springframework.modulith.events.mongodb;
1717

1818
import org.springframework.boot.autoconfigure.AutoConfiguration;
19+
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
20+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
1921
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
22+
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
2023
import org.springframework.context.annotation.Bean;
2124
import org.springframework.data.mongodb.MongoDatabaseFactory;
2225
import org.springframework.data.mongodb.MongoTransactionManager;
@@ -31,18 +34,21 @@
3134
* @author Oliver Drotbohm
3235
*/
3336
@AutoConfiguration
37+
@AutoConfigureBefore(TransactionAutoConfiguration.class)
3438
@ConditionalOnProperty(//
3539
name = "spring.modulith.events.mongobd.transaction-management.enabled",
3640
havingValue = "true",
3741
matchIfMissing = true)
3842
class MongoDbTransactionAutoConfiguration {
3943

4044
@Bean
45+
@ConditionalOnMissingBean
4146
MongoTransactionManager transactionManager(MongoDatabaseFactory factory) {
4247
return new MongoTransactionManager(factory);
4348
}
4449

4550
@Bean
51+
@ConditionalOnMissingBean
4652
TransactionTemplate transactionTemplate(PlatformTransactionManager txManager) {
4753
return new TransactionTemplate(txManager);
4854
}

0 commit comments

Comments
 (0)