From 94093a30817d5a0083bf6a5fdd66c145b9595f87 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 1 May 2023 22:16:46 +0200 Subject: [PATCH] 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. --- .../events/mongodb/MongoDbTransactionAutoConfiguration.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbTransactionAutoConfiguration.java b/spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbTransactionAutoConfiguration.java index 4f7b3ea0..d4e1b3b2 100644 --- a/spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbTransactionAutoConfiguration.java +++ b/spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbTransactionAutoConfiguration.java @@ -16,7 +16,10 @@ package org.springframework.modulith.events.mongodb; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.data.mongodb.MongoDatabaseFactory; import org.springframework.data.mongodb.MongoTransactionManager; @@ -31,6 +34,7 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Oliver Drotbohm */ @AutoConfiguration +@AutoConfigureBefore(TransactionAutoConfiguration.class) @ConditionalOnProperty(// name = "spring.modulith.events.mongobd.transaction-management.enabled", havingValue = "true", @@ -38,11 +42,13 @@ import org.springframework.transaction.support.TransactionTemplate; class MongoDbTransactionAutoConfiguration { @Bean + @ConditionalOnMissingBean MongoTransactionManager transactionManager(MongoDatabaseFactory factory) { return new MongoTransactionManager(factory); } @Bean + @ConditionalOnMissingBean TransactionTemplate transactionTemplate(PlatformTransactionManager txManager) { return new TransactionTemplate(txManager); }