Contextual
Date: 2015-09-11

javax.enterprise.context.spi

## Interface Contextual<T>

- All Known Subinterfaces:
    Bean<T>, Decorator<T>, Interceptor<T>

      public interface Contextual<T>

  Defines operations to create and destroy contextual instances of a certain type. Any implementation of `Contextual` is called a contextual type. In particular, all beans are contextual types.

  See Also:
    `Bean`

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `T` | `create(CreationalContext<T> creationalContext)` Create a new instance of the contextual type.
    `void` | `destroy(T instance, CreationalContext<T> creationalContext)` Destroy an instance of the contextual type.

- - ### Method Detail

    - #### create

          T create(CreationalContext<T> creationalContext)

      Create a new instance of the contextual type. Instances should use the given `CreationalContext` when obtaining contextual references to inject, in order to ensure that any dependent objects are associated with the contextual instance that is being created. An implementation may call `CreationalContext.push(Object)` between instantiation and injection to help the container minimize the use of client proxy objects.
      Parameters:
        `creationalContext` - the context in which this instance is being created
      Returns:
        the contextual instance
      Throws:
        `CreationException` - if a checked exception occurs while creating the instance

    - #### destroy

          void destroy(T instance,
                     CreationalContext<T> creationalContext)

      Destroy an instance of the contextual type. Implementations should call `CreationalContext.release()` to allow the container to destroy dependent objects of the contextual instance.
      Parameters:
        `instance` - the contextual instance to destroy
        `creationalContext` - the context in which this instance was created