From 620419f9e43c23acd9037f74553c70cfe8764514 Mon Sep 17 00:00:00 2001 From: davinkevin Date: Fri, 14 Sep 2018 14:08:13 +0200 Subject: [PATCH 1/2] Use ExecutorProvider bean if available when auto-configuring jOOQ See gh-14471 --- .../autoconfigure/jooq/JooqAutoConfiguration.java | 11 +++++++++-- .../jooq/JooqAutoConfigurationTests.java | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) 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..cf63b5ade2 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; @@ -32,7 +33,6 @@ import org.jooq.impl.DataSourceConnectionProvider; import org.jooq.impl.DefaultConfiguration; import org.jooq.impl.DefaultDSLContext; import org.jooq.impl.DefaultExecuteListenerProvider; - import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -109,6 +109,8 @@ public class JooqAutoConfiguration { private final TransactionListenerProvider[] transactionListenerProviders; + private final ExecutorProvider executorProvider; + public DslContextConfiguration(JooqProperties properties, ConnectionProvider connectionProvider, DataSource dataSource, ObjectProvider transactionProvider, @@ -118,7 +120,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 +134,7 @@ public class JooqAutoConfiguration { this.visitListenerProviders = visitListenerProviders.getIfAvailable(); this.transactionListenerProviders = transactionListenerProviders .getIfAvailable(); + this.executorProvider = executorProvider.getIfAvailable(); } @Bean @@ -156,6 +160,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..ff4cd0ecef 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 @@ -17,10 +17,12 @@ package org.springframework.boot.autoconfigure.jooq; import javax.sql.DataSource; +import java.util.concurrent.Executor; 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 +143,14 @@ 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 +292,13 @@ public class JooqAutoConfigurationTests { } + protected static class TestExecutorProvider implements ExecutorProvider { + + @Override + public Executor provide() { + return null; + } + + } + } From a1d1a7392fae31ad6cf6b408274e5c3f9decb6ad Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 17 Sep 2018 11:14:08 +0100 Subject: [PATCH 2/2] Polish "Use ExecutorProvider bean if available when auto-configuring jOOQ" Closes gh-14471 --- .../boot/autoconfigure/jooq/JooqAutoConfiguration.java | 1 + .../boot/autoconfigure/jooq/JooqAutoConfigurationTests.java | 6 ++++-- .../src/main/asciidoc/spring-boot-features.adoc | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) 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 cf63b5ade2..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 @@ -33,6 +33,7 @@ import org.jooq.impl.DataSourceConnectionProvider; import org.jooq.impl.DefaultConfiguration; import org.jooq.impl.DefaultDSLContext; import org.jooq.impl.DefaultExecuteListenerProvider; + import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 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 ff4cd0ecef..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,9 +16,10 @@ package org.springframework.boot.autoconfigure.jooq; -import javax.sql.DataSource; import java.util.concurrent.Executor; +import javax.sql.DataSource; + import org.jooq.DSLContext; import org.jooq.ExecuteListener; import org.jooq.ExecuteListenerProvider; @@ -143,7 +144,8 @@ public class JooqAutoConfigurationTests { TxManagerConfiguration.class, TestRecordMapperProvider.class, TestRecordUnmapperProvider.class, TestRecordListenerProvider.class, TestExecuteListenerProvider.class, TestVisitListenerProvider.class, - TestTransactionListenerProvider.class, TestExecutorProvider.class).run((context) -> { + TestTransactionListenerProvider.class, TestExecutorProvider.class) + .run((context) -> { DSLContext dsl = context.getBean(DSLContext.class); assertThat(dsl.configuration().recordMapperProvider().getClass()) .isEqualTo(TestRecordMapperProvider.class); 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`