org.springframework.beans.factory.support

## Interface BeanDefinitionReader

- All Known Implementing Classes:
    AbstractBeanDefinitionReader, GroovyBeanDefinitionReader, PropertiesBeanDefinitionReader, XmlBeanDefinitionReader

      public interface BeanDefinitionReader

  Simple interface for bean definition readers that specifies load methods with `Resource` and `String` location parameters.

  Concrete bean definition readers can of course add additional load and register methods for bean definitions, specific to their bean definition format.

  Note that a bean definition reader does not have to implement this interface. It only serves as a suggestion for bean definition readers that want to follow standard naming conventions.

  Since:
    1.1
  Author:
    Juergen Hoeller
  See Also:
    `Resource`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `ClassLoader` | `getBeanClassLoader()` Return the class loader to use for bean classes.
    `BeanNameGenerator` | `getBeanNameGenerator()` Return the `BeanNameGenerator` to use for anonymous beans (without explicit bean name specified).
    `BeanDefinitionRegistry` | `getRegistry()` Return the bean factory to register the bean definitions with.
    `ResourceLoader` | `getResourceLoader()` Return the `ResourceLoader` to use for resource locations.
    `int` | `loadBeanDefinitions(Resource... resources)` Load bean definitions from the specified resources.
    `int` | `loadBeanDefinitions(Resource resource)` Load bean definitions from the specified resource.
    `int` | `loadBeanDefinitions(String... locations)` Load bean definitions from the specified resource locations.
    `int` | `loadBeanDefinitions(String location)` Load bean definitions from the specified resource location.

- - ### Method Detail

    - #### getRegistry

          BeanDefinitionRegistry getRegistry()

      Return the bean factory to register the bean definitions with.

      The factory is exposed through the `BeanDefinitionRegistry` interface, encapsulating the methods that are relevant for bean definition handling.

    - #### getResourceLoader

          @Nullable
          ResourceLoader getResourceLoader()

      Return the `ResourceLoader` to use for resource locations.

      Can be checked for the `ResourcePatternResolver` interface and cast accordingly, for loading multiple resources for a given resource pattern.

      A `null` return value suggests that absolute resource loading is not available for this bean definition reader.

      This is mainly meant to be used for importing further resources from within a bean definition resource, for example via the "import" tag in XML bean definitions. It is recommended, however, to apply such imports relative to the defining resource; only explicit full resource locations will trigger absolute path based resource loading.

      There is also a `loadBeanDefinitions(String)` method available, for loading bean definitions from a resource location (or location pattern). This is a convenience to avoid explicit `ResourceLoader` handling.

      See Also:
        `loadBeanDefinitions(String)`, `ResourcePatternResolver`

    - #### getBeanClassLoader

          @Nullable
          ClassLoader getBeanClassLoader()

      Return the class loader to use for bean classes.

      `null` suggests to not load bean classes eagerly but rather to just register bean definitions with class names, with the corresponding classes to be resolved later (or never).

    - #### getBeanNameGenerator

          BeanNameGenerator getBeanNameGenerator()

      Return the `BeanNameGenerator` to use for anonymous beans (without explicit bean name specified).

    - #### loadBeanDefinitions

          int loadBeanDefinitions(Resource resource)
                           throws BeanDefinitionStoreException

      Load bean definitions from the specified resource.
      Parameters:
        `resource` - the resource descriptor
      Returns:
        the number of bean definitions found
      Throws:
        `BeanDefinitionStoreException` - in case of loading or parsing errors

    - #### loadBeanDefinitions

          int loadBeanDefinitions(Resource... resources)
                           throws BeanDefinitionStoreException

      Load bean definitions from the specified resources.
      Parameters:
        `resources` - the resource descriptors
      Returns:
        the number of bean definitions found
      Throws:
        `BeanDefinitionStoreException` - in case of loading or parsing errors

    - #### loadBeanDefinitions

          int loadBeanDefinitions(String location)
                           throws BeanDefinitionStoreException

      Load bean definitions from the specified resource location.

      The location can also be a location pattern, provided that the `ResourceLoader` of this bean definition reader is a `ResourcePatternResolver`.

      Parameters:
        `location` - the resource location, to be loaded with the `ResourceLoader` (or `ResourcePatternResolver`) of this bean definition reader
      Returns:
        the number of bean definitions found
      Throws:
        `BeanDefinitionStoreException` - in case of loading or parsing errors
      See Also:
        `getResourceLoader()`, `loadBeanDefinitions(org.springframework.core.io.Resource)`, `loadBeanDefinitions(org.springframework.core.io.Resource[])`

    - #### loadBeanDefinitions

          int loadBeanDefinitions(String... locations)
                           throws BeanDefinitionStoreException

      Load bean definitions from the specified resource locations.
      Parameters:
        `locations` - the resource locations, to be loaded with the `ResourceLoader` (or `ResourcePatternResolver`) of this bean definition reader
      Returns:
        the number of bean definitions found
      Throws:
        `BeanDefinitionStoreException` - in case of loading or parsing errors