## 接口的使用
org.springframework.beans.BeanWrapper

- 使用BeanWrapper的程序包
  程序包 | 说明
  --- | ---
  org.springframework.beans | This package contains interfaces and classes for manipulating Java beans.
  org.springframework.beans.factory.support | Classes supporting the `org.springframework.beans.factory` package.

- - ### org.springframework.beans中BeanWrapper的使用

    实现BeanWrapper的org.springframework.beans中的类
    限定符和类型 | 类和说明
    --- | ---
    `class` | `BeanWrapperImpl` Default `BeanWrapper` implementation that should be sufficient for all typical use cases.

    返回BeanWrapper的org.springframework.beans中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `static BeanWrapper` | PropertyAccessorFactory.`forBeanPropertyAccess(Object target)` Obtain a BeanWrapper for the given target object, accessing properties in JavaBeans style.

  - ### org.springframework.beans.factory.support中BeanWrapper的使用

    返回BeanWrapper的org.springframework.beans.factory.support中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`autowireConstructor(String beanName, RootBeanDefinition mbd, Constructor<?>[] ctors, Object[] explicitArgs)` "autowire constructor" (with constructor arguments by type) behavior.
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`createBeanInstance(String beanName, RootBeanDefinition mbd, Object[] args)` Create a new instance for the specified bean, using an appropriate instantiation strategy: factory method, constructor autowiring, or simple instantiation.
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`instantiateBean(String beanName, RootBeanDefinition mbd)` Instantiate the given bean using its default constructor.
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`instantiateUsingFactoryMethod(String beanName, RootBeanDefinition mbd, Object[] explicitArgs)` Instantiate the bean using a named factory method.
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`obtainFromSupplier(Supplier<?> instanceSupplier, String beanName)` Obtain a bean instance from the given supplier.

    参数类型为BeanWrapper的org.springframework.beans.factory.support中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected void` | AbstractAutowireCapableBeanFactory.`applyPropertyValues(String beanName, BeanDefinition mbd, BeanWrapper bw, PropertyValues pvs)` Apply the given property values, resolving any runtime references to other beans in this bean factory.
    `protected void` | AbstractAutowireCapableBeanFactory.`autowireByName(String beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs)` Fill in any missing property values with references to other beans in this factory if autowire is set to "byName".
    `protected void` | AbstractAutowireCapableBeanFactory.`autowireByType(String beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs)` Abstract method defining "autowire by type" (bean properties by type) behavior.
    `protected PropertyDescriptor[]` | AbstractAutowireCapableBeanFactory.`filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw)` Extract a filtered set of PropertyDescriptors from the given BeanWrapper, excluding ignored dependency types or properties defined on ignored dependency interfaces.
    `protected PropertyDescriptor[]` | AbstractAutowireCapableBeanFactory.`filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw, boolean cache)` Extract a filtered set of PropertyDescriptors from the given BeanWrapper, excluding ignored dependency types or properties defined on ignored dependency interfaces.
    `protected void` | AbstractBeanFactory.`initBeanWrapper(BeanWrapper bw)` Initialize the given BeanWrapper with the custom editors registered with this factory.
    `protected void` | AbstractAutowireCapableBeanFactory.`populateBean(String beanName, RootBeanDefinition mbd, BeanWrapper bw)` 给我们的对象BeanWrapper赋值
    `protected String[]` | AbstractAutowireCapableBeanFactory.`unsatisfiedNonSimpleProperties(AbstractBeanDefinition mbd, BeanWrapper bw)` spring认为的简单属性 1.