diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java index 5a0507ca05..9074078aac 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java @@ -21,6 +21,7 @@ import javax.sql.DataSource; import org.jooq.ConnectionProvider; import org.jooq.DSLContext; import org.jooq.ExecuteListenerProvider; +import org.jooq.ExecutorProvider; import org.jooq.RecordListenerProvider; import org.jooq.RecordMapperProvider; import org.jooq.RecordUnmapperProvider; @@ -109,6 +110,8 @@ public class JooqAutoConfiguration { private final TransactionListenerProvider[] transactionListenerProviders; + private final ExecutorProvider executorProvider; + public DslContextConfiguration(JooqProperties properties, ConnectionProvider connectionProvider, DataSource dataSource, ObjectProvider transactionProvider, @@ -118,7 +121,8 @@ public class JooqAutoConfiguration { ObjectProvider recordListenerProviders, ExecuteListenerProvider[] executeListenerProviders, ObjectProvider visitListenerProviders, - ObjectProvider transactionListenerProviders) { + ObjectProvider transactionListenerProviders, + ObjectProvider executorProvider) { this.properties = properties; this.connection = connectionProvider; this.dataSource = dataSource; @@ -131,6 +135,7 @@ public class JooqAutoConfiguration { this.visitListenerProviders = visitListenerProviders.getIfAvailable(); this.transactionListenerProviders = transactionListenerProviders .getIfAvailable(); + this.executorProvider = executorProvider.getIfAvailable(); } @Bean @@ -156,6 +161,9 @@ public class JooqAutoConfiguration { if (this.settings != null) { configuration.set(this.settings); } + if (this.executorProvider != null) { + configuration.set(this.executorProvider); + } configuration.set(this.recordListenerProviders); configuration.set(this.executeListenerProviders); configuration.set(this.visitListenerProviders); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java index e968651d36..10b7c7586f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java @@ -16,11 +16,14 @@ package org.springframework.boot.autoconfigure.jooq; +import java.util.concurrent.Executor; + import javax.sql.DataSource; import org.jooq.DSLContext; import org.jooq.ExecuteListener; import org.jooq.ExecuteListenerProvider; +import org.jooq.ExecutorProvider; import org.jooq.Record; import org.jooq.RecordListener; import org.jooq.RecordListenerProvider; @@ -141,12 +144,15 @@ public class JooqAutoConfigurationTests { TxManagerConfiguration.class, TestRecordMapperProvider.class, TestRecordUnmapperProvider.class, TestRecordListenerProvider.class, TestExecuteListenerProvider.class, TestVisitListenerProvider.class, - TestTransactionListenerProvider.class).run((context) -> { + TestTransactionListenerProvider.class, TestExecutorProvider.class) + .run((context) -> { DSLContext dsl = context.getBean(DSLContext.class); assertThat(dsl.configuration().recordMapperProvider().getClass()) .isEqualTo(TestRecordMapperProvider.class); assertThat(dsl.configuration().recordUnmapperProvider().getClass()) .isEqualTo(TestRecordUnmapperProvider.class); + assertThat(dsl.configuration().executorProvider().getClass()) + .isEqualTo(TestExecutorProvider.class); assertThat(dsl.configuration().recordListenerProviders().length) .isEqualTo(1); assertThat(dsl.configuration().executeListenerProviders().length) @@ -288,4 +294,13 @@ public class JooqAutoConfigurationTests { } + protected static class TestExecutorProvider implements ExecutorProvider { + + @Override + public Executor provide() { + return null; + } + + } + } diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index bec852c2ef..0e7c2dc2fc 100644 --- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -3966,6 +3966,7 @@ which is used when the jOOQ `Configuration` is created. You can define beans for following jOOQ Types: * `ConnectionProvider` +* `ExecutorProvider` * `TransactionProvider` * `RecordMapperProvider` * `RecordUnmapperProvider`