mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-10-08 02:09:06 +00:00
Upgrade to jOOQ 3.20 and require Java 21 to use it
Closes gh-48619
This commit is contained in:
+3
@@ -4,6 +4,9 @@
|
||||
Spring Boot {version-spring-boot} requires at least https://www.java.com[Java 17] and is compatible with versions up to and including Java 25.
|
||||
{url-spring-framework-docs}/[Spring Framework {version-spring-framework}] or above is also required.
|
||||
|
||||
Support for third-party projects may have additional or higher requirements.
|
||||
Refer to the documentation for that support for further details.
|
||||
|
||||
Explicit build support is provided for the following build tools:
|
||||
|
||||
|===
|
||||
|
||||
@@ -49,7 +49,6 @@ dependencies {
|
||||
dockerTestRuntimeOnly("org.postgresql:postgresql")
|
||||
|
||||
testImplementation(project(":core:spring-boot-test"))
|
||||
testImplementation(project(":module:spring-boot-jooq"))
|
||||
testImplementation(project(":test-support:spring-boot-test-support"))
|
||||
testImplementation(testFixtures(project(":core:spring-boot-autoconfigure")))
|
||||
testImplementation("jakarta.persistence:jakarta.persistence-api")
|
||||
|
||||
-45
@@ -49,9 +49,6 @@ import org.flywaydb.database.oracle.OracleConfigurationExtension;
|
||||
import org.flywaydb.database.postgresql.PostgreSQLConfigurationExtension;
|
||||
import org.flywaydb.database.sqlserver.SQLServerConfigurationExtension;
|
||||
import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.impl.DefaultDSLContext;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InOrder;
|
||||
@@ -60,7 +57,6 @@ import org.postgresql.Driver;
|
||||
import org.springframework.aot.hint.RuntimeHints;
|
||||
import org.springframework.aot.hint.predicate.RuntimeHintsPredicates;
|
||||
import org.springframework.beans.factory.BeanCreationException;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.flyway.autoconfigure.FlywayAutoConfiguration.FlywayAutoConfigurationRuntimeHints;
|
||||
@@ -822,37 +818,6 @@ class FlywayAutoConfigurationTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenFlywayIsAutoConfiguredThenJooqDslContextDependsOnFlywayBeans() {
|
||||
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class)
|
||||
.run((context) -> {
|
||||
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
|
||||
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("flywayInitializer", "flyway");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenCustomMigrationInitializerIsDefinedThenJooqDslContextDependsOnIt() {
|
||||
this.contextRunner
|
||||
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class,
|
||||
CustomFlywayMigrationInitializer.class)
|
||||
.run((context) -> {
|
||||
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
|
||||
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("flywayMigrationInitializer",
|
||||
"flyway");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenCustomFlywayIsDefinedThenJooqDslContextDependsOnIt() {
|
||||
this.contextRunner
|
||||
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class, CustomFlyway.class)
|
||||
.run((context) -> {
|
||||
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
|
||||
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("customFlyway");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void scriptPlaceholderPrefixIsCorrectlyMapped() {
|
||||
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
|
||||
@@ -1186,16 +1151,6 @@ class FlywayAutoConfigurationTests {
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class JooqConfiguration {
|
||||
|
||||
@Bean
|
||||
DSLContext dslContext() {
|
||||
return new DefaultDSLContext(SQLDialect.H2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableConfigurationProperties(DataSourceProperties.class)
|
||||
abstract static class AbstractUserH2DataSourceConfiguration {
|
||||
|
||||
@@ -23,6 +23,12 @@ plugins {
|
||||
|
||||
description = "Spring Boot jOOQ Test"
|
||||
|
||||
systemRequirements {
|
||||
java {
|
||||
version = JavaLanguageVersion.of(21)
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api(project(":core:spring-boot-test-autoconfigure"))
|
||||
api(project(":module:spring-boot-jdbc-test"))
|
||||
|
||||
@@ -24,6 +24,12 @@ plugins {
|
||||
|
||||
description = "Spring Boot jOOQ"
|
||||
|
||||
systemRequirements {
|
||||
java {
|
||||
version = JavaLanguageVersion.of(21)
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api(project(":module:spring-boot-jdbc"))
|
||||
api(project(":module:spring-boot-transaction"))
|
||||
@@ -34,6 +40,7 @@ dependencies {
|
||||
optional("jakarta.xml.bind:jakarta.xml.bind-api")
|
||||
|
||||
testImplementation(project(":core:spring-boot-test"))
|
||||
testImplementation(project(":module:spring-boot-flyway"))
|
||||
testImplementation(project(":test-support:spring-boot-test-support"))
|
||||
|
||||
testRuntimeOnly("ch.qos.logback:logback-classic")
|
||||
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* Copyright 2012-present the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jooq.autoconfigure;
|
||||
|
||||
import org.flywaydb.core.Flyway;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.impl.DefaultDSLContext;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.flyway.autoconfigure.FlywayAutoConfiguration;
|
||||
import org.springframework.boot.flyway.autoconfigure.FlywayMigrationInitializer;
|
||||
import org.springframework.boot.jdbc.autoconfigure.EmbeddedDataSourceConfiguration;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.Ordered;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests for jOQQ when Flyway is being used for DB initialization.
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
*/
|
||||
class JooqFlywayDatabaseInitializationTests {
|
||||
|
||||
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(FlywayAutoConfiguration.class))
|
||||
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class)
|
||||
.withPropertyValues("spring.datasource.generate-unique-name=true");
|
||||
|
||||
@Test
|
||||
void whenFlywayIsAutoConfiguredThenJooqDslContextDependsOnFlywayBeans() {
|
||||
this.contextRunner.run((context) -> {
|
||||
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
|
||||
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("flywayInitializer", "flyway");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenCustomMigrationInitializerIsDefinedThenJooqDslContextDependsOnIt() {
|
||||
this.contextRunner.withUserConfiguration(CustomFlywayMigrationInitializer.class).run((context) -> {
|
||||
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
|
||||
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("flywayMigrationInitializer", "flyway");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenCustomFlywayIsDefinedThenJooqDslContextDependsOnIt() {
|
||||
this.contextRunner.withUserConfiguration(CustomFlyway.class).run((context) -> {
|
||||
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
|
||||
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("customFlyway");
|
||||
});
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class JooqConfiguration {
|
||||
|
||||
@Bean
|
||||
DSLContext dslContext() {
|
||||
return new DefaultDSLContext(SQLDialect.H2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class CustomFlywayMigrationInitializer {
|
||||
|
||||
@Bean
|
||||
FlywayMigrationInitializer flywayMigrationInitializer(Flyway flyway) {
|
||||
FlywayMigrationInitializer initializer = new FlywayMigrationInitializer(flyway);
|
||||
initializer.setOrder(Ordered.HIGHEST_PRECEDENCE);
|
||||
return initializer;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class CustomFlyway {
|
||||
|
||||
@Bean
|
||||
Flyway customFlyway() {
|
||||
return Flyway.configure().load();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-3.19.29.xsd">
|
||||
<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-3.20.10.xsd">
|
||||
<batchSize>100</batchSize>
|
||||
</settings>
|
||||
|
||||
@@ -1058,11 +1058,7 @@ bom {
|
||||
]
|
||||
}
|
||||
}
|
||||
library("jOOQ", "3.19.29") {
|
||||
prohibit {
|
||||
versionRange "[3.20.0,)"
|
||||
because "it requires Java 21"
|
||||
}
|
||||
library("jOOQ", "3.20.10") {
|
||||
group("org.jooq") {
|
||||
bom("jooq-bom")
|
||||
plugins = [
|
||||
|
||||
Reference in New Issue
Block a user