AfterBeanDiscovery
Date: 2015-09-11

javax.enterprise.inject.spi

## Interface AfterBeanDiscovery

-     public interface AfterBeanDiscovery

  The event type of the second event fired by the container when it has fully completed the bean discovery process, validated that there are no definition errors relating to the discovered beans, and registered `Bean` and `ObserverMethod` objects for the discovered beans, but before detecting deployment problems.

  A portable extension may take advantage of this event to register beans, interceptors, decorators, observer methods and custom context objects with the container.

           void afterBeanDiscovery(@Observes AfterBeanDiscovery event, BeanManager manager) { ... }

  If any observer method of the `AfterBeanDiscovery` event throws an exception, the exception is treated as a definition error by the container.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addBean(Bean<?> bean)` Fires an event of type `ProcessBean` containing the given `Bean` and then registers the `Bean` with the container, thereby making it available for injection into other beans.
    `void` | `addContext(Context context)` Registers a custom `Context` object with the container.
    `void` | `addDefinitionError(java.lang.Throwable t)` Registers a definition error with the container, causing the container to abort deployment after all observers have been notified.
    `void` | `addObserverMethod(ObserverMethod<?> observerMethod)` Fires an event of type `ProcessObserverMethod` containing the given `ObserverMethod` and then registers the `ObserverMethod` with the container, thereby making it available for event notifications.

- - ### Method Detail

    - #### addDefinitionError

          void addDefinitionError(java.lang.Throwable t)

      Registers a definition error with the container, causing the container to abort deployment after all observers have been notified.
      Parameters:
        `t` - The definition error as a `Throwable`

    - #### addBean

          void addBean(Bean<?> bean)

      Fires an event of type `ProcessBean` containing the given `Bean` and then registers the `Bean` with the container, thereby making it available for injection into other beans. The given `Bean` may implement `Interceptor` or `Decorator`.
      Parameters:
        `bean` - The bean to add to the deployment

    - #### addObserverMethod

          void addObserverMethod(ObserverMethod<?> observerMethod)

      Fires an event of type `ProcessObserverMethod` containing the given `ObserverMethod` and then registers the `ObserverMethod` with the container, thereby making it available for event notifications.
      Parameters:
        `observerMethod` - The custom observer method to add to the deployment

    - #### addContext

          void addContext(Context context)

      Registers a custom `Context` object with the container.
      Parameters:
        `context` - The custom context to add to the deployment