org.springframework.cglib.beans

## Class BeanGenerator

- java.lang.Object
- - org.springframework.cglib.core.AbstractClassGenerator
  - - org.springframework.cglib.beans.BeanGenerator

- All Implemented Interfaces:
    org.springframework.cglib.core.ClassGenerator

      public class BeanGenerator
      extends AbstractClassGenerator

  Author:
    Juozas Baliuka, Chris Nokleberg

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.springframework.cglib.core.AbstractClassGenerator

      `AbstractClassGenerator.ClassLoaderData, AbstractClassGenerator.Source`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BeanGenerator()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `addProperties(BeanGenerator gen, Class type)`
    `static void` | `addProperties(BeanGenerator gen, Map props)`
    `static void` | `addProperties(BeanGenerator gen, PropertyDescriptor[] descriptors)`
    `void` | `addProperty(String name, Class type)`
    `Object` | `create()`
    `Object` | `createClass()`
    `protected Object` | `firstInstance(Class type)`
    `void` | `generateClass(ClassVisitor v)`
    `protected ClassLoader` | `getDefaultClassLoader()`
    `protected ProtectionDomain` | `getProtectionDomain()` Returns the protection domain to use when defining the class.
    `protected Object` | `nextInstance(Object instance)`
    `void` | `setSuperclass(Class superclass)` Set the class which the generated class will extend.

    - ### Methods inherited from class org.springframework.cglib.core.AbstractClassGenerator

      `create, generate, getAttemptLoad, getClassLoader, getClassName, getCurrent, getNamingPolicy, getStrategy, getUseCache, setAttemptLoad, setClassLoader, setContextClass, setNamePrefix, setNamingPolicy, setStrategy, setUseCache, unwrapCachedValue, wrapCachedClass`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### BeanGenerator

          public BeanGenerator()

  - ### Method Detail

    - #### setSuperclass

          public void setSuperclass(Class superclass)

      Set the class which the generated class will extend. The class must not be declared as final, and must have a non-private no-argument constructor.
      Parameters:
        `superclass` - class to extend, or null to extend Object

    - #### addProperty

          public void addProperty(String name,
                                  Class type)

    - #### getDefaultClassLoader

          protected ClassLoader getDefaultClassLoader()

      Specified by:
        `getDefaultClassLoader` in class `AbstractClassGenerator`

    - #### getProtectionDomain

          protected ProtectionDomain getProtectionDomain()

      Description copied from class: `AbstractClassGenerator`
      Returns the protection domain to use when defining the class.

      Default implementation returns `null` for using a default protection domain. Sub-classes may override to use a more specific protection domain.

      Overrides:
        `getProtectionDomain` in class `AbstractClassGenerator`
      Returns:
        the protection domain (`null` for using a default)

    - #### create

          public Object create()

    - #### createClass

          public Object createClass()

    - #### generateClass

          public void generateClass(ClassVisitor v)
                             throws Exception

      Throws:
        `Exception`

    - #### firstInstance

          protected Object firstInstance(Class type)

      Specified by:
        `firstInstance` in class `AbstractClassGenerator`

    - #### nextInstance

          protected Object nextInstance(Object instance)

      Specified by:
        `nextInstance` in class `AbstractClassGenerator`

    - #### addProperties

          public static void addProperties(BeanGenerator gen,
                                           Map props)

    - #### addProperties

          public static void addProperties(BeanGenerator gen,
                                           Class type)

    - #### addProperties

          public static void addProperties(BeanGenerator gen,
                                           PropertyDescriptor[] descriptors)