## org.springframework.beans.factory.support
Class AbstractBeanDefinitionReader

    java.lang.Object
      org.springframework.beans.factory.support.AbstractBeanDefinitionReader

All Implemented Interfaces:
  BeanDefinitionReader

Direct Known Subclasses:
  PropertiesBeanDefinitionReader, XmlBeanDefinitionReader

    public abstract class AbstractBeanDefinitionReader

extends Object
implements BeanDefinitionReader

Abstract base class for bean definition readers which implement the `BeanDefinitionReader` interface.

Provides common properties like the bean factory to work on and the class loader to use for loading bean classes.

Since:
  11.12.2003
Author:
  Juergen Hoeller
See Also:
  `BeanDefinitionReaderUtils`

Field Summary
`protected Log` `logger` Logger available to subclasses

Constructor Summary
`protected` `AbstractBeanDefinitionReader(BeanDefinitionRegistry registry)` Create a new AbstractBeanDefinitionReader for the given bean factory.

Method Summary
`ClassLoader` `getBeanClassLoader()` Return the class loader to use for bean classes.
`BeanDefinitionRegistry` `getBeanFactory()`
`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 resource loader to use for resource locations.
`int` `loadBeanDefinitions(Resource... resources)` Load bean definitions from the specified resources.
`int` `loadBeanDefinitions(String... locations)` Load bean definitions from the specified resource locations.
`int` `loadBeanDefinitions(String location)` Load bean definitions from the specified resource location.
`int` `loadBeanDefinitions(String location, Set<Resource> actualResources)` Load bean definitions from the specified resource location.
`void` `setBeanClassLoader(ClassLoader beanClassLoader)` Set the ClassLoader to use for bean classes.
`void` `setBeanNameGenerator(BeanNameGenerator beanNameGenerator)` Set the BeanNameGenerator to use for anonymous beans (without explicit bean name specified).
`void` `setResourceLoader(ResourceLoader resourceLoader)` Set the ResourceLoader to use for resource locations.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.springframework.beans.factory.support.BeanDefinitionReader
`loadBeanDefinitions`

Field Detail

### logger

    protected final Log logger

  Logger available to subclasses

Constructor Detail

### AbstractBeanDefinitionReader

    protected AbstractBeanDefinitionReader(BeanDefinitionRegistry registry)

  Create a new AbstractBeanDefinitionReader for the given bean factory.

  If the passed-in bean factory does not only implement the BeanDefinitionRegistry interface but also the ResourceLoader interface, it will be used as default ResourceLoader as well. This will usually be the case for `ApplicationContext` implementations.

  If given a plain BeanDefinitionRegistry, the default ResourceLoader will be a `PathMatchingResourcePatternResolver`.

  Parameters:
    `registry` - the BeanFactory to load bean definitions into, in the form of a BeanDefinitionRegistry
  See Also:
    `setResourceLoader(org.springframework.core.io.ResourceLoader)`

Method Detail

### getBeanFactory

    public final BeanDefinitionRegistry getBeanFactory()

### getRegistry

    public final BeanDefinitionRegistry getRegistry()

  Description copied from interface: `BeanDefinitionReader`
  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.

  Specified by:
    `getRegistry` in interface `BeanDefinitionReader`

### setResourceLoader

    public void setResourceLoader(ResourceLoader resourceLoader)

  Set the ResourceLoader to use for resource locations. If specifying a ResourcePatternResolver, the bean definition reader will be capable of resolving resource patterns to Resource arrays.

  Default is PathMatchingResourcePatternResolver, also capable of resource pattern resolving through the ResourcePatternResolver interface.

  Setting this to `null` suggests that absolute resource loading is not available for this bean definition reader.

  See Also:
    `ResourcePatternResolver`, `PathMatchingResourcePatternResolver`

### getResourceLoader

    public ResourceLoader getResourceLoader()

  Description copied from interface: `BeanDefinitionReader`
  Return the resource loader to use for resource locations. Can be checked for the ResourcePatternResolver interface and cast accordingly, for loading multiple resources for a given resource pattern.

  Null 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 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.

  Specified by:
    `getResourceLoader` in interface `BeanDefinitionReader`
  See Also:
    `BeanDefinitionReader.loadBeanDefinitions(String)`, `ResourcePatternResolver`

### setBeanClassLoader

    public void setBeanClassLoader(ClassLoader beanClassLoader)

  Set the ClassLoader to use for bean classes.

  Default is `null`, which 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).

  See Also:
    `Thread.getContextClassLoader()`

### getBeanClassLoader

    public ClassLoader getBeanClassLoader()

  Description copied from interface: `BeanDefinitionReader`
  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).

  Specified by:
    `getBeanClassLoader` in interface `BeanDefinitionReader`

### setBeanNameGenerator

    public void setBeanNameGenerator(BeanNameGenerator beanNameGenerator)

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

  Default is a `DefaultBeanNameGenerator`.

### getBeanNameGenerator

    public BeanNameGenerator getBeanNameGenerator()

  Description copied from interface: `BeanDefinitionReader`
  Return the BeanNameGenerator to use for anonymous beans (without explicit bean name specified).

  Specified by:
    `getBeanNameGenerator` in interface `BeanDefinitionReader`

### loadBeanDefinitions

    public int loadBeanDefinitions(Resource... resources)
                            throws BeanDefinitionStoreException

  Description copied from interface: `BeanDefinitionReader`
  Load bean definitions from the specified resources.

  Specified by:
    `loadBeanDefinitions` in interface `BeanDefinitionReader`
  Parameters:
    `resources` - the resource descriptors
  Returns:
    the number of bean definitions found
  Throws:
    `BeanDefinitionStoreException` - in case of loading or parsing errors

### loadBeanDefinitions

    public int loadBeanDefinitions(String location)
                            throws BeanDefinitionStoreException

  Description copied from interface: `BeanDefinitionReader`
  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.

  Specified by:
    `loadBeanDefinitions` in interface `BeanDefinitionReader`
  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:
    `BeanDefinitionReader.getResourceLoader()`, `BeanDefinitionReader.loadBeanDefinitions(org.springframework.core.io.Resource)`, `BeanDefinitionReader.loadBeanDefinitions(org.springframework.core.io.Resource[])`

### loadBeanDefinitions

    public int loadBeanDefinitions(String location,
                                   Set<Resource> actualResources)
                            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
    `actualResources` - a Set to be filled with the actual Resource objects that have been resolved during the loading process. May be `null` to indicate that the caller is not interested in those Resource objects.
  Returns:
    the number of bean definitions found
  Throws:
    `BeanDefinitionStoreException` - in case of loading or parsing errors
  See Also:
    `getResourceLoader()`, `BeanDefinitionReader.loadBeanDefinitions(org.springframework.core.io.Resource)`, `loadBeanDefinitions(org.springframework.core.io.Resource[])`

### loadBeanDefinitions

    public int loadBeanDefinitions(String... locations)
                            throws BeanDefinitionStoreException

  Description copied from interface: `BeanDefinitionReader`
  Load bean definitions from the specified resource locations.

  Specified by:
    `loadBeanDefinitions` in interface `BeanDefinitionReader`
  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