diff --git a/pom.xml b/pom.xml
index a6dc167a03..ff69fed580 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-commons
- 4.0.0-SNAPSHOT
+ 4.0.x-GH-3305-SNAPSHOT
Spring Data Core
Core Spring concepts underpinning every Spring Data module.
diff --git a/src/main/java/org/springframework/data/convert/PropertyValueConverterFactories.java b/src/main/java/org/springframework/data/convert/PropertyValueConverterFactories.java
index 3db744e032..e030f11bb6 100644
--- a/src/main/java/org/springframework/data/convert/PropertyValueConverterFactories.java
+++ b/src/main/java/org/springframework/data/convert/PropertyValueConverterFactories.java
@@ -125,8 +125,7 @@ static class BeanFactoryAwarePropertyValueConverterFactory implements PropertyVa
PropertyValueConverter converter = beanFactory.getBeanProvider(converterType).getIfAvailable();
if (converter == null && beanFactory instanceof AutowireCapableBeanFactory) {
- return (PropertyValueConverter) ((AutowireCapableBeanFactory) beanFactory).createBean(converterType,
- AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR, false);
+ return (PropertyValueConverter) ((AutowireCapableBeanFactory) beanFactory).createBean(converterType);
}
return converter;
diff --git a/src/main/java/org/springframework/data/repository/aot/hint/RepositoryRuntimeHints.java b/src/main/java/org/springframework/data/repository/aot/hint/RepositoryRuntimeHints.java
index 6b660c5cb5..7a32dd2809 100644
--- a/src/main/java/org/springframework/data/repository/aot/hint/RepositoryRuntimeHints.java
+++ b/src/main/java/org/springframework/data/repository/aot/hint/RepositoryRuntimeHints.java
@@ -92,7 +92,7 @@ public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader)
//
hints.reflection().registerType(Throwable.class,
- builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.DECLARED_FIELDS));
+ builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.ACCESS_DECLARED_FIELDS));
// SpEL support
hints.reflection().registerType(
diff --git a/src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotContribution.java b/src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotContribution.java
index 34b0caff52..e8e102e315 100644
--- a/src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotContribution.java
+++ b/src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotContribution.java
@@ -332,8 +332,7 @@ private void contributeRepositoryInfo(AotRepositoryContext repositoryContext, Ge
// Kotlin
if (isKotlinCoroutineRepository(repositoryContext, repositoryInformation)) {
- contribution.getRuntimeHints().reflection().registerTypes(kotlinRepositoryReflectionTypeReferences(),
- hint -> hint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS));
+ contribution.getRuntimeHints().reflection().registerTypes(kotlinRepositoryReflectionTypeReferences(), hint -> {});
}
// Repository query methods
diff --git a/src/main/java/org/springframework/data/repository/query/QueryMethod.java b/src/main/java/org/springframework/data/repository/query/QueryMethod.java
index b09c706345..ca3cc74a12 100644
--- a/src/main/java/org/springframework/data/repository/query/QueryMethod.java
+++ b/src/main/java/org/springframework/data/repository/query/QueryMethod.java
@@ -22,6 +22,7 @@
import java.util.function.Predicate;
import java.util.stream.Stream;
+import org.jspecify.annotations.Nullable;
import org.springframework.data.domain.Limit;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -41,7 +42,6 @@
import org.springframework.data.util.ReactiveWrappers;
import org.springframework.data.util.ReflectionUtils;
import org.springframework.data.util.TypeInformation;
-import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
diff --git a/src/main/java/org/springframework/data/util/NullnessMethodInvocationValidator.java b/src/main/java/org/springframework/data/util/NullnessMethodInvocationValidator.java
index 143a055ae7..0f7d082a61 100644
--- a/src/main/java/org/springframework/data/util/NullnessMethodInvocationValidator.java
+++ b/src/main/java/org/springframework/data/util/NullnessMethodInvocationValidator.java
@@ -19,6 +19,7 @@
import java.lang.annotation.ElementType;
import java.lang.reflect.Method;
+import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -245,8 +246,8 @@ public boolean equals(@Nullable Object o) {
@Override
public int hashCode() {
int result = (nullableReturn ? 1 : 0);
- result = (31 * result) + ObjectUtils.nullSafeHashCode(nullableParameters);
- result = (31 * result) + ObjectUtils.nullSafeHashCode(methodParameters);
+ result = (31 * result) + Arrays.hashCode(nullableParameters);
+ result = (31 * result) + Arrays.hashCode(methodParameters);
return result;
}
diff --git a/src/main/java/org/springframework/data/util/QTypeContributor.java b/src/main/java/org/springframework/data/util/QTypeContributor.java
index 8447a35973..701336d799 100644
--- a/src/main/java/org/springframework/data/util/QTypeContributor.java
+++ b/src/main/java/org/springframework/data/util/QTypeContributor.java
@@ -50,7 +50,7 @@ public static void contributeEntityPath(Class> type, GenerationContext context
logger.debug("Registering Q type %s for %s.");
context.getRuntimeHints().reflection().registerType(TypeReference.of(queryClassName),
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS,
- MemberCategory.INTROSPECT_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS);
+ MemberCategory.ACCESS_DECLARED_FIELDS);
} else {
logger.debug("Skipping Q type %s. Not an EntityPath.");
}
diff --git a/src/main/java/org/springframework/data/util/TypeContributor.java b/src/main/java/org/springframework/data/util/TypeContributor.java
index a98672f6da..c7781dd7ac 100644
--- a/src/main/java/org/springframework/data/util/TypeContributor.java
+++ b/src/main/java/org/springframework/data/util/TypeContributor.java
@@ -62,7 +62,7 @@ public static void contribute(Class> type, Predicate) type)) {
contribution.getRuntimeHints().reflection().registerType(type,
- hint -> hint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS));
+ hint -> {});
return;
}
diff --git a/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolverSupport.java b/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolverSupport.java
index deb9845a33..a7281e1e17 100644
--- a/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolverSupport.java
+++ b/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolverSupport.java
@@ -23,7 +23,6 @@
import java.util.function.Consumer;
import org.jspecify.annotations.Nullable;
-
import org.springframework.core.MethodParameter;
import org.springframework.core.annotation.MergedAnnotation;
import org.springframework.core.annotation.MergedAnnotations;
@@ -126,7 +125,7 @@ public void setFallbackSort(Sort fallbackSort) {
protected Sort getDefaultFromAnnotationOrFallback(MethodParameter parameter) {
MergedAnnotations mergedAnnotations = MergedAnnotations.from(parameter, parameter.getParameterAnnotations(),
- RepeatableContainers.of(SortDefault.class, SortDefaults.class));
+ RepeatableContainers.explicitRepeatable(SortDefault.class, SortDefaults.class));
List> annotations = mergedAnnotations.stream(SortDefault.class).toList();