Skip to content

Commit f2361dd

Browse files
committed
Merge pull request #33979 from ath0s
* gh-33979: Polish "Configure jOOQ with TransactionProvider bean when available" Configure jOOQ with TransactionProvider bean when available Closes gh-33979
2 parents b28369d + 56a1551 commit f2361dd

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,13 @@ public DefaultDSLContext dslContext(org.jooq.Configuration configuration) {
8787
@Bean
8888
@ConditionalOnMissingBean(org.jooq.Configuration.class)
8989
public DefaultConfiguration jooqConfiguration(JooqProperties properties, ConnectionProvider connectionProvider,
90-
DataSource dataSource, ObjectProvider<ExecuteListenerProvider> executeListenerProviders,
90+
DataSource dataSource, ObjectProvider<TransactionProvider> transactionProvider,
91+
ObjectProvider<ExecuteListenerProvider> executeListenerProviders,
9192
ObjectProvider<DefaultConfigurationCustomizer> configurationCustomizers) {
9293
DefaultConfiguration configuration = new DefaultConfiguration();
9394
configuration.set(properties.determineSqlDialect(dataSource));
9495
configuration.set(connectionProvider);
96+
transactionProvider.ifAvailable(configuration::set);
9597
configuration.set(executeListenerProviders.orderedStream().toArray(ExecuteListenerProvider[]::new));
9698
configurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration));
9799
return configuration;

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,17 @@ void jooqWithDefaultConnectionProvider() {
113113
});
114114
}
115115

116+
@Test
117+
void jooqWithDefaultTransactionProvider() {
118+
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class, TxManagerConfiguration.class)
119+
.run((context) -> {
120+
DSLContext dsl = context.getBean(DSLContext.class);
121+
TransactionProvider expectedTransactionProvider = context.getBean(TransactionProvider.class);
122+
TransactionProvider transactionProvider = dsl.configuration().transactionProvider();
123+
assertThat(transactionProvider).isSameAs(expectedTransactionProvider);
124+
});
125+
}
126+
116127
@Test
117128
void jooqWithDefaultExecuteListenerProvider() {
118129
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class).run((context) -> {
@@ -164,6 +175,19 @@ void transactionProviderBacksOffOnExistingTransactionProvider() {
164175
.run((context) -> {
165176
TransactionProvider transactionProvider = context.getBean(TransactionProvider.class);
166177
assertThat(transactionProvider).isInstanceOf(CustomTransactionProvider.class);
178+
DSLContext dsl = context.getBean(DSLContext.class);
179+
assertThat(dsl.configuration().transactionProvider()).isSameAs(transactionProvider);
180+
});
181+
}
182+
183+
@Test
184+
void transactionProviderFromConfigurationCustomizerOverridesTransactionProviderBean() {
185+
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class, TxManagerConfiguration.class,
186+
CustomTransactionProviderFromCustomizerConfiguration.class).run((context) -> {
187+
TransactionProvider transactionProvider = context.getBean(TransactionProvider.class);
188+
assertThat(transactionProvider).isInstanceOf(SpringTransactionProvider.class);
189+
DSLContext dsl = context.getBean(DSLContext.class);
190+
assertThat(dsl.configuration().transactionProvider()).isInstanceOf(CustomTransactionProvider.class);
167191
});
168192
}
169193

@@ -228,6 +252,16 @@ TransactionProvider transactionProvider() {
228252

229253
}
230254

255+
@Configuration(proxyBeanMethods = false)
256+
static class CustomTransactionProviderFromCustomizerConfiguration {
257+
258+
@Bean
259+
DefaultConfigurationCustomizer transactionProviderCustomizer() {
260+
return (configuration) -> configuration.setTransactionProvider(new CustomTransactionProvider());
261+
}
262+
263+
}
264+
231265
@Configuration(proxyBeanMethods = false)
232266
static class TxManagerConfiguration {
233267

0 commit comments

Comments
 (0)