Package org.springframework.expression.spel.support

# Class DataBindingMethodResolver

java.lang.Object
org.springframework.expression.spel.support.ReflectiveMethodResolver
org.springframework.expression.spel.support.DataBindingMethodResolver

All Implemented Interfaces:
  `MethodResolver`

public final class DataBindingMethodResolver extends ReflectiveMethodResolver
An `MethodResolver` variant for data binding purposes, using reflection to access instance methods on a given target object.

This accessor does not resolve static methods and also no technical methods on `java.lang.Object` or `java.lang.Class`. For unrestricted resolution, choose `ReflectiveMethodResolver` instead.

Since:
  4.3.15
Author:
  Juergen Hoeller
See Also:
  - `forInstanceMethodInvocation()`
  - `DataBindingPropertyAccessor`

## Method Summary

Modifier and Type
Method
Description
`static DataBindingMethodResolver`
`forInstanceMethodInvocation()`
Create a new data-binding method resolver for instance method resolution.
`protected boolean`
`isCandidateForInvocation(Method method, Class<?> targetClass)`
Determine whether the given `Method` is a candidate for method resolution on an instance of the given target class.
`MethodExecutor`
`resolve(EvaluationContext context, Object targetObject, String name, List<org.springframework.core.convert.TypeDescriptor> argumentTypes)`
Locate a method on the type.

### Methods inherited from class org.springframework.expression.spel.support.ReflectiveMethodResolver

`getMethods, registerMethodFilter`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### resolve

@Nullable public MethodExecutor resolve(EvaluationContext context, Object targetObject, String name, List<org.springframework.core.convert.TypeDescriptor> argumentTypes) throws AccessException
Description copied from class: `ReflectiveMethodResolver`
Locate a method on the type.

There are three kinds of matches that might occur:

1. An exact match where the types of the arguments match the types of the method.
2. An inexact match where the types we are looking for are subtypes of those defined on the method.
3. A match where we are able to convert the arguments into those expected by the method, according to the registered type converter.

Specified by:
  `resolve` in interface `MethodResolver`
Overrides:
  `resolve` in class `ReflectiveMethodResolver`
Parameters:
  `context` - the current evaluation context
  `targetObject` - the object upon which the method is being called
  `name` - the name of the method
  `argumentTypes` - the types of arguments that the method must be able to handle
Returns:
  a `MethodExecutor` that can invoke the method, or `null` if the method cannot be found
Throws:
  `AccessException`

### isCandidateForInvocation

protected boolean isCandidateForInvocation(Method method, Class<?> targetClass)
Description copied from class: `ReflectiveMethodResolver`
Determine whether the given `Method` is a candidate for method resolution on an instance of the given target class.

The default implementation considers any method as a candidate, even for static methods and non-user-declared methods on the `Object` base class.

Overrides:
  `isCandidateForInvocation` in class `ReflectiveMethodResolver`
Parameters:
  `method` - the Method to evaluate
  `targetClass` - the concrete target class that is being introspected

### forInstanceMethodInvocation

public static DataBindingMethodResolver forInstanceMethodInvocation()
Create a new data-binding method resolver for instance method resolution.