diff --git a/spring-aop/src/test/java/org/springframework/aop/interceptor/AsyncExecutionInterceptorTests.java b/spring-aop/src/test/java/org/springframework/aop/interceptor/AsyncExecutionInterceptorTests.java index 70b34728277..ec751f46e33 100644 --- a/spring-aop/src/test/java/org/springframework/aop/interceptor/AsyncExecutionInterceptorTests.java +++ b/spring-aop/src/test/java/org/springframework/aop/interceptor/AsyncExecutionInterceptorTests.java @@ -37,7 +37,6 @@ import static org.mockito.Mockito.verify; * Tests for {@link AsyncExecutionInterceptor}. * * @author Bao Ngo - * @since 7.0 */ class AsyncExecutionInterceptorTests { @@ -62,11 +61,13 @@ class AsyncExecutionInterceptorTests { O run(); } + static class FutureRunner implements GenericRunner> { + @Override public Future run() { - return CompletableFuture.runAsync(() -> { - }); + return CompletableFuture.runAsync(() -> {}); } } + } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AdviceMode.java b/spring-context/src/main/java/org/springframework/context/annotation/AdviceMode.java index 2f33ebe3af2..ac06381da6a 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AdviceMode.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AdviceMode.java @@ -17,19 +17,18 @@ package org.springframework.context.annotation; /** - * Enumeration used to determine whether JDK proxy-based or + * Enumeration used to determine whether JDK/CGLIB proxy-based or * AspectJ weaving-based advice should be applied. * * @author Chris Beams * @since 3.1 - * @see org.springframework.scheduling.annotation.EnableAsync#mode() * @see org.springframework.scheduling.annotation.AsyncConfigurationSelector#selectImports - * @see org.springframework.transaction.annotation.EnableTransactionManagement#mode() + * @see org.springframework.scheduling.annotation.EnableAsync#mode() */ public enum AdviceMode { /** - * JDK proxy-based advice. + * JDK/CGLIB proxy-based advice. */ PROXY, diff --git a/spring-context/src/main/java/org/springframework/context/aot/AotApplicationContextInitializer.java b/spring-context/src/main/java/org/springframework/context/aot/AotApplicationContextInitializer.java index 4a290d9b502..7a14224d808 100644 --- a/spring-context/src/main/java/org/springframework/context/aot/AotApplicationContextInitializer.java +++ b/spring-context/src/main/java/org/springframework/context/aot/AotApplicationContextInitializer.java @@ -63,13 +63,13 @@ public interface AotApplicationContextInitializer void initialize( C applicationContext, String... initializerClassNames) { + Log logger = LogFactory.getLog(AotApplicationContextInitializer.class); ClassLoader classLoader = applicationContext.getClassLoader(); logger.debug("Initializing ApplicationContext with AOT"); for (String initializerClassName : initializerClassNames) { logger.trace(LogMessage.format("Applying %s", initializerClassName)); - instantiateInitializer(initializerClassName, classLoader) - .initialize(applicationContext); + instantiateInitializer(initializerClassName, classLoader).initialize(applicationContext); } } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/MySQLTableMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/MySQLTableMetaDataProvider.java new file mode 100644 index 00000000000..39632ba9bed --- /dev/null +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/MySQLTableMetaDataProvider.java @@ -0,0 +1,36 @@ +/* + * Copyright 2002-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.jdbc.core.metadata; + +import java.sql.DatabaseMetaData; +import java.sql.SQLException; + +/** + * The MySQL/MariaDB specific implementation of {@link TableMetaDataProvider}. + * Sets {@link #setGeneratedKeysColumnNameArraySupported} to {@code false}. + * + * @author Juergen Hoeller + * @since 6.2.12 + */ +public class MySQLTableMetaDataProvider extends GenericTableMetaDataProvider { + + public MySQLTableMetaDataProvider(DatabaseMetaData databaseMetaData) throws SQLException { + super(databaseMetaData); + setGeneratedKeysColumnNameArraySupported(false); + } + +} diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java index 871783469f9..7c741ef9fb0 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java @@ -409,8 +409,7 @@ public class TableMetaDataContext { } /** - * Does this database support a column name String array for retrieving generated - * keys? + * Does this database support a column name String array for retrieving generated keys? * @see java.sql.Connection#createStruct(String, Object[]) */ public boolean isGeneratedKeysColumnNameArraySupported() { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProvider.java index 1b3e047f210..f1d72f68897 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProvider.java @@ -129,16 +129,14 @@ public interface TableMetaDataProvider { @Nullable String getSimpleQueryForGetGeneratedKey(String tableName, String keyColumnName); /** - * Does this database support a column name String array for retrieving generated - * keys? + * Does this database support a column name String array for retrieving generated keys? * @see java.sql.Connection#createStruct(String, Object[]) */ boolean isGeneratedKeysColumnNameArraySupported(); /** * Get the string used to quote SQL identifiers. - *

This method returns a space ({@code " "}) if identifier quoting is not - * supported. + *

This method returns a space ({@code " "}) if identifier quoting is not supported. * @return database identifier quote string * @since 6.1 * @see DatabaseMetaData#getIdentifierQuoteString() diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java index 640d76ec2e0..f0301f92695 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java @@ -66,6 +66,9 @@ public final class TableMetaDataProviderFactory { else if ("HSQL Database Engine".equals(databaseProductName)) { provider = new HsqlTableMetaDataProvider(databaseMetaData); } + else if ("MySQL".equals(databaseProductName) || "MariaDB".equals(databaseProductName)) { + provider = new MySQLTableMetaDataProvider(databaseMetaData); + } else { provider = new GenericTableMetaDataProvider(databaseMetaData); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseEntityReturnValueHandler.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseEntityReturnValueHandler.java index 81f8e91645f..6c16a3a343c 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseEntityReturnValueHandler.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseEntityReturnValueHandler.java @@ -39,7 +39,7 @@ import org.springframework.web.method.support.ModelAndViewContainer; * provide enough information to decide via {@link #supportsReturnType}. * * @author Rossen Stoyanchev - * @since 7.0 + * @since 6.2.9 */ public class ResponseEntityReturnValueHandler implements HandlerMethodReturnValueHandler {