org.springframework.beans.factory

## Class InjectionPoint

- java.lang.Object
- - org.springframework.beans.factory.InjectionPoint

- Direct Known Subclasses:
    DependencyDescriptor

      public class InjectionPoint
      extends Object

  A simple descriptor for an injection point, pointing to a method/constructor parameter or a field. Exposed by `UnsatisfiedDependencyException`. Also available as an argument for factory methods, reacting to the requesting injection point for building a customized bean instance.
  Since:
    4.3
  Author:
    Juergen Hoeller
  See Also:
    `UnsatisfiedDependencyException.getInjectionPoint()`, `DependencyDescriptor`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Field` | `field`
    `protected MethodParameter` | `methodParameter`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `InjectionPoint()` Just available for serialization purposes in subclasses.
    `` | `InjectionPoint(Field field)` Create an injection point descriptor for a field.
    `protected` | `InjectionPoint(InjectionPoint original)` Copy constructor.
    `` | `InjectionPoint(MethodParameter methodParameter)` Create an injection point descriptor for a method or constructor parameter.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object other)`
    `AnnotatedElement` | `getAnnotatedElement()` Return the wrapped annotated element.
    `<A extends Annotation> A` | `getAnnotation(Class<A> annotationType)` Retrieve a field/parameter annotation of the given type, if any.
    `Annotation[]` | `getAnnotations()` Obtain the annotations associated with the wrapped field or method/constructor parameter.
    `Class<?>` | `getDeclaredType()` Return the type declared by the underlying field or method/constructor parameter, indicating the injection type.
    `Field` | `getField()` Return the wrapped Field, if any.
    `Member` | `getMember()` Returns the wrapped member, containing the injection point.
    `MethodParameter` | `getMethodParameter()` Return the wrapped MethodParameter, if any.
    `int` | `hashCode()`
    `protected MethodParameter` | `obtainMethodParameter()` Return the wrapped MethodParameter, assuming it is present.
    `String` | `toString()`

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

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### methodParameter

          @Nullable
          protected MethodParameter methodParameter

    - #### field

          @Nullable
          protected Field field

  - ### Constructor Detail

    - #### InjectionPoint

          public InjectionPoint(MethodParameter methodParameter)

      Create an injection point descriptor for a method or constructor parameter.
      Parameters:
        `methodParameter` - the MethodParameter to wrap

    - #### InjectionPoint

          public InjectionPoint(Field field)

      Create an injection point descriptor for a field.
      Parameters:
        `field` - the field to wrap

    - #### InjectionPoint

          protected InjectionPoint(InjectionPoint original)

      Copy constructor.
      Parameters:
        `original` - the original descriptor to create a copy from

    - #### InjectionPoint

          protected InjectionPoint()

      Just available for serialization purposes in subclasses.

  - ### Method Detail

    - #### getMethodParameter

          @Nullable
          public MethodParameter getMethodParameter()

      Return the wrapped MethodParameter, if any.

      Note: Either MethodParameter or Field is available.

      Returns:
        the MethodParameter, or `null` if none

    - #### getField

          @Nullable
          public Field getField()

      Return the wrapped Field, if any.

      Note: Either MethodParameter or Field is available.

      Returns:
        the Field, or `null` if none

    - #### obtainMethodParameter

          protected final MethodParameter obtainMethodParameter()

      Return the wrapped MethodParameter, assuming it is present.
      Returns:
        the MethodParameter (never `null`)
      Throws:
        `IllegalStateException` - if no MethodParameter is available
      Since:
        5.0

    - #### getAnnotations

          public Annotation[] getAnnotations()

      Obtain the annotations associated with the wrapped field or method/constructor parameter.

    - #### getAnnotation

          @Nullable
          public <A extends Annotation> A getAnnotation(Class<A> annotationType)

      Retrieve a field/parameter annotation of the given type, if any.
      Parameters:
        `annotationType` - the annotation type to retrieve
      Returns:
        the annotation instance, or `null` if none found
      Since:
        4.3.9

    - #### getDeclaredType

          public Class<?> getDeclaredType()

      Return the type declared by the underlying field or method/constructor parameter, indicating the injection type.

    - #### getMember

          public Member getMember()

      Returns the wrapped member, containing the injection point.
      Returns:
        the Field / Method / Constructor as Member

    - #### getAnnotatedElement

          public AnnotatedElement getAnnotatedElement()

      Return the wrapped annotated element.

      Note: In case of a method/constructor parameter, this exposes the annotations declared on the method or constructor itself (i.e. at the method/constructor level, not at the parameter level). Use `getAnnotations()` to obtain parameter-level annotations in such a scenario, transparently with corresponding field annotations.

      Returns:
        the Field / Method / Constructor as AnnotatedElement

    - #### equals

          public boolean equals(@Nullable
                                Object other)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`