org.springframework.beans

## Interface BeanWrapper

- All Superinterfaces:
    ConfigurablePropertyAccessor, PropertyAccessor, PropertyEditorRegistry, TypeConverter
  All Known Implementing Classes:
    BeanWrapperImpl

      public interface BeanWrapper
      extends ConfigurablePropertyAccessor

  The central interface of Spring's low-level JavaBeans infrastructure.

  Typically not used directly but rather implicitly via a `BeanFactory` or a `DataBinder`.

  Provides operations to analyze and manipulate standard JavaBeans: the ability to get and set property values (individually or in bulk), get property descriptors, and query the readability/writability of properties.

  This interface supports nested properties enabling the setting of properties on subproperties to an unlimited depth.

  A BeanWrapper's default for the "extractOldValueForEditor" setting is "false", to avoid side effects caused by getter method invocations. Turn this to "true" to expose present property values to custom editors.

  Since:
    13 April 2001
  Author:
    Rod Johnson, Juergen Hoeller
  See Also:
    `PropertyAccessor`, `PropertyEditorRegistry`, `PropertyAccessorFactory.forBeanPropertyAccess(java.lang.Object)`, `BeanFactory`, `BeanPropertyBindingResult`, `DataBinder.initBeanPropertyAccess()`

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.beans.PropertyAccessor

      `NESTED_PROPERTY_SEPARATOR, NESTED_PROPERTY_SEPARATOR_CHAR, PROPERTY_KEY_PREFIX, PROPERTY_KEY_PREFIX_CHAR, PROPERTY_KEY_SUFFIX, PROPERTY_KEY_SUFFIX_CHAR`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getAutoGrowCollectionLimit()` Return the limit for array and collection auto-growing.
    `PropertyDescriptor` | `getPropertyDescriptor(String propertyName)` Obtain the property descriptor for a specific property of the wrapped object.
    `PropertyDescriptor[]` | `getPropertyDescriptors()` Obtain the PropertyDescriptors for the wrapped object (as determined by standard JavaBeans introspection).
    `Class<?>` | `getWrappedClass()` Return the type of the wrapped bean instance.
    `Object` | `getWrappedInstance()` Return the bean instance wrapped by this object.
    `void` | `setAutoGrowCollectionLimit(int autoGrowCollectionLimit)` Specify a limit for array and collection auto-growing.

    - ### Methods inherited from interface org.springframework.beans.ConfigurablePropertyAccessor

      `getConversionService, isAutoGrowNestedPaths, isExtractOldValueForEditor, setAutoGrowNestedPaths, setConversionService, setExtractOldValueForEditor`

    - ### Methods inherited from interface org.springframework.beans.PropertyAccessor

      `getPropertyType, getPropertyTypeDescriptor, getPropertyValue, isReadableProperty, isWritableProperty, setPropertyValue, setPropertyValue, setPropertyValues, setPropertyValues, setPropertyValues, setPropertyValues`

    - ### Methods inherited from interface org.springframework.beans.PropertyEditorRegistry

      `findCustomEditor, registerCustomEditor, registerCustomEditor`

    - ### Methods inherited from interface org.springframework.beans.TypeConverter

      `convertIfNecessary, convertIfNecessary, convertIfNecessary, convertIfNecessary`

- - ### Method Detail

    - #### setAutoGrowCollectionLimit

          void setAutoGrowCollectionLimit(int autoGrowCollectionLimit)

      Specify a limit for array and collection auto-growing.

      Default is unlimited on a plain BeanWrapper.

      Since:
        4.1

    - #### getAutoGrowCollectionLimit

          int getAutoGrowCollectionLimit()

      Return the limit for array and collection auto-growing.
      Since:
        4.1

    - #### getWrappedInstance

          Object getWrappedInstance()

      Return the bean instance wrapped by this object.

    - #### getWrappedClass

          Class<?> getWrappedClass()

      Return the type of the wrapped bean instance.

    - #### getPropertyDescriptors

          PropertyDescriptor[] getPropertyDescriptors()

      Obtain the PropertyDescriptors for the wrapped object (as determined by standard JavaBeans introspection).
      Returns:
        the PropertyDescriptors for the wrapped object

    - #### getPropertyDescriptor

          PropertyDescriptor getPropertyDescriptor(String propertyName)
                                            throws InvalidPropertyException

      Obtain the property descriptor for a specific property of the wrapped object.
      Parameters:
        `propertyName` - the property to obtain the descriptor for (may be a nested path, but not an indexed/mapped property)
      Returns:
        the property descriptor for the specified property
      Throws:
        `InvalidPropertyException` - if there is no such property