Skip to content

Commit 1606f5b

Browse files
committed
Back off Jooq's TransactionProvider on custom TransactionProvider
Closes gh-32899
1 parent 2cdd071 commit 1606f5b

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public DataSourceConnectionProvider dataSourceConnectionProvider(DataSource data
7171

7272
@Bean
7373
@ConditionalOnBean(PlatformTransactionManager.class)
74+
@ConditionalOnMissingBean(TransactionProvider.class)
7475
public SpringTransactionProvider transactionProvider(PlatformTransactionManager txManager) {
7576
return new SpringTransactionProvider(txManager);
7677
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
import org.jooq.RecordMapperProvider;
3030
import org.jooq.RecordUnmapperProvider;
3131
import org.jooq.SQLDialect;
32+
import org.jooq.TransactionContext;
3233
import org.jooq.TransactionListenerProvider;
34+
import org.jooq.TransactionProvider;
3335
import org.jooq.TransactionalRunnable;
3436
import org.jooq.VisitListenerProvider;
3537
import org.jooq.impl.DataSourceConnectionProvider;
@@ -188,6 +190,16 @@ void relaxedBindingOfSqlDialect() {
188190
.isEqualTo(SQLDialect.POSTGRES));
189191
}
190192

193+
@Test
194+
void transactionProviderBacksOffOnExistingTransactionProvider() {
195+
this.contextRunner
196+
.withUserConfiguration(JooqDataSourceConfiguration.class, CustomTransactionProviderConfiguration.class)
197+
.run((context) -> {
198+
TransactionProvider transactionProvider = context.getBean(TransactionProvider.class);
199+
assertThat(transactionProvider).isInstanceOf(CustomTransactionProvider.class);
200+
});
201+
}
202+
191203
static class AssertFetch implements TransactionalRunnable {
192204

193205
private final DSLContext dsl;
@@ -239,6 +251,16 @@ DataSource jooqDataSource() {
239251

240252
}
241253

254+
@Configuration(proxyBeanMethods = false)
255+
static class CustomTransactionProviderConfiguration {
256+
257+
@Bean
258+
TransactionProvider transactionProvider() {
259+
return new CustomTransactionProvider();
260+
}
261+
262+
}
263+
242264
@Configuration(proxyBeanMethods = false)
243265
static class TxManagerConfiguration {
244266

@@ -259,4 +281,23 @@ public ExecuteListener provide() {
259281

260282
}
261283

284+
static class CustomTransactionProvider implements TransactionProvider {
285+
286+
@Override
287+
public void begin(TransactionContext ctx) {
288+
289+
}
290+
291+
@Override
292+
public void commit(TransactionContext ctx) {
293+
294+
}
295+
296+
@Override
297+
public void rollback(TransactionContext ctx) {
298+
299+
}
300+
301+
}
302+
262303
}

0 commit comments

Comments
 (0)