Merge branch '3.0.x'

Closes gh-34040
pull/34063/head
Andy Wilkinson 2 years ago
commit 636b70a77d

@ -87,11 +87,13 @@ public class JooqAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean(org.jooq.Configuration.class) @ConditionalOnMissingBean(org.jooq.Configuration.class)
public DefaultConfiguration jooqConfiguration(JooqProperties properties, ConnectionProvider connectionProvider, public DefaultConfiguration jooqConfiguration(JooqProperties properties, ConnectionProvider connectionProvider,
DataSource dataSource, ObjectProvider<ExecuteListenerProvider> executeListenerProviders, DataSource dataSource, ObjectProvider<TransactionProvider> transactionProvider,
ObjectProvider<ExecuteListenerProvider> executeListenerProviders,
ObjectProvider<DefaultConfigurationCustomizer> configurationCustomizers) { ObjectProvider<DefaultConfigurationCustomizer> configurationCustomizers) {
DefaultConfiguration configuration = new DefaultConfiguration(); DefaultConfiguration configuration = new DefaultConfiguration();
configuration.set(properties.determineSqlDialect(dataSource)); configuration.set(properties.determineSqlDialect(dataSource));
configuration.set(connectionProvider); configuration.set(connectionProvider);
transactionProvider.ifAvailable(configuration::set);
configuration.set(executeListenerProviders.orderedStream().toArray(ExecuteListenerProvider[]::new)); configuration.set(executeListenerProviders.orderedStream().toArray(ExecuteListenerProvider[]::new));
configurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration)); configurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration));
return configuration; return configuration;

@ -113,6 +113,17 @@ class JooqAutoConfigurationTests {
}); });
} }
@Test
void jooqWithDefaultTransactionProvider() {
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class, TxManagerConfiguration.class)
.run((context) -> {
DSLContext dsl = context.getBean(DSLContext.class);
TransactionProvider expectedTransactionProvider = context.getBean(TransactionProvider.class);
TransactionProvider transactionProvider = dsl.configuration().transactionProvider();
assertThat(transactionProvider).isSameAs(expectedTransactionProvider);
});
}
@Test @Test
void jooqWithDefaultExecuteListenerProvider() { void jooqWithDefaultExecuteListenerProvider() {
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class).run((context) -> { this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class).run((context) -> {
@ -164,6 +175,19 @@ class JooqAutoConfigurationTests {
.run((context) -> { .run((context) -> {
TransactionProvider transactionProvider = context.getBean(TransactionProvider.class); TransactionProvider transactionProvider = context.getBean(TransactionProvider.class);
assertThat(transactionProvider).isInstanceOf(CustomTransactionProvider.class); assertThat(transactionProvider).isInstanceOf(CustomTransactionProvider.class);
DSLContext dsl = context.getBean(DSLContext.class);
assertThat(dsl.configuration().transactionProvider()).isSameAs(transactionProvider);
});
}
@Test
void transactionProviderFromConfigurationCustomizerOverridesTransactionProviderBean() {
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class, TxManagerConfiguration.class,
CustomTransactionProviderFromCustomizerConfiguration.class).run((context) -> {
TransactionProvider transactionProvider = context.getBean(TransactionProvider.class);
assertThat(transactionProvider).isInstanceOf(SpringTransactionProvider.class);
DSLContext dsl = context.getBean(DSLContext.class);
assertThat(dsl.configuration().transactionProvider()).isInstanceOf(CustomTransactionProvider.class);
}); });
} }
@ -228,6 +252,16 @@ class JooqAutoConfigurationTests {
} }
@Configuration(proxyBeanMethods = false)
static class CustomTransactionProviderFromCustomizerConfiguration {
@Bean
DefaultConfigurationCustomizer transactionProviderCustomizer() {
return (configuration) -> configuration.setTransactionProvider(new CustomTransactionProvider());
}
}
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
static class TxManagerConfiguration { static class TxManagerConfiguration {

Loading…
Cancel
Save