Browse Source

Filter candidate methods by name first (for more efficient sorting)

Closes gh-28377
pull/31694/head
Juergen Hoeller 2 years ago
parent
commit
0599320bd8
  1. 3
      spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java

3
spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java

@ -117,6 +117,7 @@ public class ReflectiveMethodResolver implements MethodResolver { @@ -117,6 +117,7 @@ public class ReflectiveMethodResolver implements MethodResolver {
TypeConverter typeConverter = context.getTypeConverter();
Class<?> type = (targetObject instanceof Class<?> clazz ? clazz : targetObject.getClass());
ArrayList<Method> methods = new ArrayList<>(getMethods(type, targetObject));
methods.removeIf(method -> !method.getName().equals(name));
// If a filter is registered for this type, call it
MethodFilter filter = (this.filters != null ? this.filters.get(type) : null);
@ -160,7 +161,6 @@ public class ReflectiveMethodResolver implements MethodResolver { @@ -160,7 +161,6 @@ public class ReflectiveMethodResolver implements MethodResolver {
boolean multipleOptions = false;
for (Method method : methodsToIterate) {
if (method.getName().equals(name)) {
int paramCount = method.getParameterCount();
List<TypeDescriptor> paramDescriptors = new ArrayList<>(paramCount);
for (int i = 0; i < paramCount; i++) {
@ -203,7 +203,6 @@ public class ReflectiveMethodResolver implements MethodResolver { @@ -203,7 +203,6 @@ public class ReflectiveMethodResolver implements MethodResolver {
}
}
}
}
if (closeMatch != null) {
return new ReflectiveMethodExecutor(closeMatch, type);
}

Loading…
Cancel
Save