org.springframework.beans.factory.support

## Interface InstantiationStrategy

- All Known Implementing Classes:
    CglibSubclassingInstantiationStrategy, SimpleInstantiationStrategy

      public interface InstantiationStrategy

  Interface responsible for creating instances corresponding to a root bean definition.

  This is pulled out into a strategy as various approaches are possible, including using CGLIB to create subclasses on the fly to support Method Injection.

  Since:
    1.1
  Author:
    Rod Johnson

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `instantiate(RootBeanDefinition beanDefinition, String beanName, BeanFactory owner)` Return an instance of the bean with the given name in this factory.
    `Object` | `instantiate(RootBeanDefinition beanDefinition, String beanName, BeanFactory owner, Constructor<?> ctor, Object[] args)` Return an instance of the bean with the given name in this factory, creating it via the given constructor.
    `Object` | `instantiate(RootBeanDefinition beanDefinition, String beanName, BeanFactory owner, Object factoryBean, Method factoryMethod, Object[] args)` Return an instance of the bean with the given name in this factory, creating it via the given factory method.

- - ### Method Detail

    - #### instantiate

          Object instantiate(RootBeanDefinition beanDefinition,
                           String beanName,
                           BeanFactory owner)
                             throws BeansException

      Return an instance of the bean with the given name in this factory.
      Parameters:
        `beanDefinition` - the bean definition
        `beanName` - name of the bean when it's created in this context. The name can be `null` if we're autowiring a bean that doesn't belong to the factory.
        `owner` - owning BeanFactory
      Returns:
        a bean instance for this bean definition
      Throws:
        `BeansException` - if the instantiation failed

    - #### instantiate

          Object instantiate(RootBeanDefinition beanDefinition,
                           String beanName,
                           BeanFactory owner,
                           Constructor<?> ctor,
                           Object[] args)
                             throws BeansException

      Return an instance of the bean with the given name in this factory, creating it via the given constructor.
      Parameters:
        `beanDefinition` - the bean definition
        `beanName` - name of the bean when it's created in this context. The name can be `null` if we're autowiring a bean that doesn't belong to the factory.
        `owner` - owning BeanFactory
        `ctor` - the constructor to use
        `args` - the constructor arguments to apply
      Returns:
        a bean instance for this bean definition
      Throws:
        `BeansException` - if the instantiation failed

    - #### instantiate

          Object instantiate(RootBeanDefinition beanDefinition,
                           String beanName,
                           BeanFactory owner,
                           Object factoryBean,
                           Method factoryMethod,
                           Object[] args)
                             throws BeansException

      Return an instance of the bean with the given name in this factory, creating it via the given factory method.
      Parameters:
        `beanDefinition` - bean definition
        `beanName` - name of the bean when it's created in this context. The name can be `null` if we're autowiring a bean that doesn't belong to the factory.
        `owner` - owning BeanFactory
        `factoryBean` - the factory bean instance to call the factory method on, or `null` in case of a static factory method
        `factoryMethod` - the factory method to use
        `args` - the factory method arguments to apply
      Returns:
        a bean instance for this bean definition
      Throws:
        `BeansException` - if the instantiation failed