Package 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, Juergen Hoeller

## Method Summary

Modifier and Type
Method
Description
`default Class<?>`
`getActualBeanClass(RootBeanDefinition bd, String beanName, BeanFactory owner)`
Determine the actual class for the given bean definition, as instantiated at runtime.
`Object`
`instantiate(RootBeanDefinition bd, String beanName, BeanFactory owner)`
Return an instance of the bean with the given name in this factory.
`Object`
`instantiate(RootBeanDefinition bd, 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.
`Object`
`instantiate(RootBeanDefinition bd, 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.

## Method Details

### instantiate

Object instantiate(RootBeanDefinition bd, @Nullable String beanName, BeanFactory owner) throws BeansException
Return an instance of the bean with the given name in this factory.

Parameters:
  `bd` - the bean definition
  `beanName` - the name of the bean when it is created in this context. The name can be `null` if we are autowiring a bean which doesn't belong to the factory.
  `owner` - the owning BeanFactory
Returns:
  a bean instance for this bean definition
Throws:
  `BeansException` - if the instantiation attempt failed

### instantiate

Object instantiate(RootBeanDefinition bd, @Nullable 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:
  `bd` - the bean definition
  `beanName` - the name of the bean when it is created in this context. The name can be `null` if we are autowiring a bean which doesn't belong to the factory.
  `owner` - the 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 attempt failed

### instantiate

Object instantiate(RootBeanDefinition bd, @Nullable String beanName, BeanFactory owner, @Nullable 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:
  `bd` - the bean definition
  `beanName` - the name of the bean when it is created in this context. The name can be `null` if we are autowiring a bean which doesn't belong to the factory.
  `owner` - the 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 attempt failed

### getActualBeanClass

default Class<?> getActualBeanClass(RootBeanDefinition bd, @Nullable String beanName, BeanFactory owner)
Determine the actual class for the given bean definition, as instantiated at runtime.

Since:
  6.0