org.springframework.beans.factory.config

## Class CustomScopeConfigurer

- java.lang.Object
- - org.springframework.beans.factory.config.CustomScopeConfigurer

- All Implemented Interfaces:
    Aware, BeanClassLoaderAware, BeanFactoryPostProcessor, Ordered

      public class CustomScopeConfigurer
      extends Object
      implements BeanFactoryPostProcessor, BeanClassLoaderAware, Ordered

  Simple `BeanFactoryPostProcessor` implementation that registers custom `Scope(s)` with the containing `ConfigurableBeanFactory`.

  Will register all of the supplied `scopes` with the `ConfigurableListableBeanFactory` that is passed to the `postProcessBeanFactory(ConfigurableListableBeanFactory)` method.

  This class allows for declarative registration of custom scopes. Alternatively, consider implementing a custom `BeanFactoryPostProcessor` that calls `ConfigurableBeanFactory.registerScope(java.lang.String, org.springframework.beans.factory.config.Scope)` programmatically.

  Since:
    2.0
  Author:
    Juergen Hoeller, Rick Evans
  See Also:
    `ConfigurableBeanFactory.registerScope(java.lang.String, org.springframework.beans.factory.config.Scope)`

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CustomScopeConfigurer()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addScope(String scopeName, Scope scope)` Add the given scope to this configurer's map of scopes.
    `int` | `getOrder()` Get the order value of this object.
    `void` | `postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)` Modify the application context's internal bean factory after its standard initialization.
    `void` | `setBeanClassLoader(ClassLoader beanClassLoader)` Callback that supplies the bean `class loader` to a bean instance.
    `void` | `setOrder(int order)`
    `void` | `setScopes(Map<String,Object> scopes)` Specify the custom scopes that are to be registered.

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

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

- - ### Constructor Detail

    - #### CustomScopeConfigurer

          public CustomScopeConfigurer()

  - ### Method Detail

    - #### setScopes

          public void setScopes(Map<String,Object> scopes)

      Specify the custom scopes that are to be registered.

      The keys indicate the scope names (of type String); each value is expected to be the corresponding custom `Scope` instance or class name.

    - #### addScope

          public void addScope(String scopeName,
                               Scope scope)

      Add the given scope to this configurer's map of scopes.
      Parameters:
        `scopeName` - the name of the scope
        `scope` - the scope implementation
      Since:
        4.1.1

    - #### setOrder

          public void setOrder(int order)

    - #### getOrder

          public int getOrder()

      Description copied from interface: `Ordered`
      Get the order value of this object.

      Higher values are interpreted as lower priority. As a consequence, the object with the lowest value has the highest priority (somewhat analogous to Servlet `load-on-startup` values).

      Same order values will result in arbitrary sort positions for the affected objects.

      Specified by:
        `getOrder` in interface `Ordered`
      Returns:
        the order value
      See Also:
        `Ordered.HIGHEST_PRECEDENCE`, `Ordered.LOWEST_PRECEDENCE`

    - #### setBeanClassLoader

          public void setBeanClassLoader(@Nullable
                                         ClassLoader beanClassLoader)

      Description copied from interface: `BeanClassLoaderAware`
      Callback that supplies the bean `class loader` to a bean instance.

      Invoked after the population of normal bean properties but before an initialization callback such as `InitializingBean's` `InitializingBean.afterPropertiesSet()` method or a custom init-method.

      Specified by:
        `setBeanClassLoader` in interface `BeanClassLoaderAware`
      Parameters:
        `beanClassLoader` - the owning class loader

    - #### postProcessBeanFactory

          public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
                                      throws BeansException

      Description copied from interface: `BeanFactoryPostProcessor`
      Modify the application context's internal bean factory after its standard initialization. All bean definitions will have been loaded, but no beans will have been instantiated yet. This allows for overriding or adding properties even to eager-initializing beans.
      Specified by:
        `postProcessBeanFactory` in interface `BeanFactoryPostProcessor`
      Parameters:
        `beanFactory` - the bean factory used by the application context
      Throws:
        `BeansException` - in case of errors