Class DefaultBeanFactory

java.lang.Object
org.apache.commons.configuration2.beanutils.DefaultBeanFactory
All Implemented Interfaces:
BeanFactory

public class DefaultBeanFactory extends Object implements BeanFactory

The default implementation of the BeanFactory interface.

This class creates beans of arbitrary types using reflection. Each time the createBean() method is invoked, a new bean instance is created. A default bean class is not supported.

For data type conversions (which may be needed before invoking methods through reflection to ensure that the current parameters match their declared types) a ConversionHandler object is used. An instance of this class can be passed to the constructor. Alternatively, a default ConversionHandler instance is used.

An instance of this factory class will be set as the default bean factory for the BeanHelper class. This means that if not bean factory is specified in a BeanDeclaration, this default instance will be used.

Since:
1.3
  • Field Details

  • Constructor Details

    • DefaultBeanFactory

      Constructs a new instance of DefaultBeanFactory using a default ConversionHandler.
    • DefaultBeanFactory

      Constructs a new instance of DefaultBeanFactory using the specified ConversionHandler for data type conversions.
      Parameters:
      convHandler - the ConversionHandler; can be null, then a default handler is used
      Since:
      2.0
  • Method Details

    • getConversionHandler

      Gets the ConversionHandler used by this object.
      Returns:
      the ConversionHandler
      Since:
      2.0
    • createBean

      Creates a new bean instance. This implementation delegates to the protected methods createBeanInstance() and initBeanInstance() for creating and initializing the bean. This makes it easier for derived classes that need to change specific functionality of the base class.
      Specified by:
      createBean in interface BeanFactory
      Parameters:
      bcc - the context object defining the bean to be created
      Returns:
      the new bean instance
      Throws:
      Exception - if an error occurs
    • getDefaultBeanClass

      Gets the default bean class used by this factory. This is always null for this implementation.
      Specified by:
      getDefaultBeanClass in interface BeanFactory
      Returns:
      the default bean class
    • createBeanInstance

      Creates the bean instance. This method is called by createBean(). It uses reflection to create a new instance of the specified class.
      Parameters:
      bcc - the context object defining the bean to be created
      Returns:
      the new bean instance
      Throws:
      Exception - if an error occurs
    • initBeanInstance

      protected void initBeanInstance(Object bean, BeanCreationContext bcc) throws Exception
      Initializes the newly created bean instance. This method is called by createBean(). It calls the initBean() method of the context object for performing the initialization.
      Parameters:
      bean - the newly created bean instance
      bcc - the context object defining the bean to be created
      Throws:
      Exception - if an error occurs
    • findMatchingConstructor

      protected static <T> Constructor<T> findMatchingConstructor(Class<T> beanClass, BeanDeclaration data)
      Evaluates constructor arguments in the specified BeanDeclaration and tries to find a unique matching constructor. If this is not possible, an exception is thrown. Note: This method is intended to be used by concrete BeanFactory implementations and not by client code.
      Type Parameters:
      T - the type of the bean to be created
      Parameters:
      beanClass - the class of the bean to be created
      data - the current BeanDeclaration
      Returns:
      the single matching constructor
      Throws:
      ConfigurationRuntimeException - if no single matching constructor can be found
      NullPointerException - if the bean class or bean declaration are null