mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
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
This commit is contained in:
commit
f2361dd9b1
@ -87,11 +87,13 @@ public class JooqAutoConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(org.jooq.Configuration.class)
|
||||
public DefaultConfiguration jooqConfiguration(JooqProperties properties, ConnectionProvider connectionProvider,
|
||||
DataSource dataSource, ObjectProvider<ExecuteListenerProvider> executeListenerProviders,
|
||||
DataSource dataSource, ObjectProvider<TransactionProvider> transactionProvider,
|
||||
ObjectProvider<ExecuteListenerProvider> executeListenerProviders,
|
||||
ObjectProvider<DefaultConfigurationCustomizer> configurationCustomizers) {
|
||||
DefaultConfiguration configuration = new DefaultConfiguration();
|
||||
configuration.set(properties.determineSqlDialect(dataSource));
|
||||
configuration.set(connectionProvider);
|
||||
transactionProvider.ifAvailable(configuration::set);
|
||||
configuration.set(executeListenerProviders.orderedStream().toArray(ExecuteListenerProvider[]::new));
|
||||
configurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(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
|
||||
void jooqWithDefaultExecuteListenerProvider() {
|
||||
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class).run((context) -> {
|
||||
@ -164,6 +175,19 @@ class JooqAutoConfigurationTests {
|
||||
.run((context) -> {
|
||||
TransactionProvider transactionProvider = context.getBean(TransactionProvider.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)
|
||||
static class TxManagerConfiguration {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user