The Spring Framework

org.springframework.context.annotation
Class ClassPathBeanDefinitionScanner

java.lang.Object
  extended by org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
      extended by org.springframework.context.annotation.ClassPathBeanDefinitionScanner
All Implemented Interfaces:
ResourceLoaderAware

public class ClassPathBeanDefinitionScanner
extends ClassPathScanningCandidateComponentProvider

A bean definition scanner that detects bean candidates on the classpath, registering corresponding bean definitions with a given registry (BeanFactory or ApplicationContext).

Candidate classes are detected through configurable type filters. The default filters include classes that are annotated with Spring's @Component, @Repository, @Service, or @Controller stereotype.

Since:
2.5
Author:
Mark Fisher, Juergen Hoeller
See Also:
Component, Repository, Service, Controller

Field Summary
 
Fields inherited from class org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
DEFAULT_RESOURCE_PATTERN
 
Constructor Summary
ClassPathBeanDefinitionScanner(BeanDefinitionRegistry registry)
          Create a new ClassPathBeanDefinitionScanner for the given bean factory.
ClassPathBeanDefinitionScanner(BeanDefinitionRegistry registry, boolean useDefaultFilters)
          Create a new ClassPathBeanDefinitionScanner for the given bean factory.
 
Method Summary
protected  Set<BeanDefinitionHolder> doScan(String... basePackages)
          Perform a scan within the specified base packages, returning the registered bean definitions.
 int scan(String... basePackages)
          Perform a scan within the specified base packages.
 void setAutowireCandidatePatterns(String[] autowireCandidatePatterns)
          Set the name-matching patterns for determining autowire candidates.
 void setBeanDefinitionDefaults(BeanDefinitionDefaults beanDefinitionDefaults)
          Set the defaults to use for detected beans.
 void setBeanNameGenerator(BeanNameGenerator beanNameGenerator)
          Set the BeanNameGenerator to use for detected bean classes.
 void setIncludeAnnotationConfig(boolean includeAnnotationConfig)
          Specify whether to register annotation config post-processors.
 void setScopedProxyMode(ScopedProxyMode scopedProxyMode)
          Specify the proxy behavior for non-singleton scoped beans.
 void setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)
          Set the ScopeMetadataResolver to use for detected bean classes.
 
Methods inherited from class org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
addExcludeFilter, addIncludeFilter, findCandidateComponents, isCandidateComponent, isCandidateComponent, registerDefaultFilters, resetFilters, setResourceLoader, setResourcePattern
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClassPathBeanDefinitionScanner

public ClassPathBeanDefinitionScanner(BeanDefinitionRegistry registry)
Create a new ClassPathBeanDefinitionScanner for the given bean factory.

Parameters:
registry - the BeanFactory to load bean definitions into, in the form of a BeanDefinitionRegistry

ClassPathBeanDefinitionScanner

public ClassPathBeanDefinitionScanner(BeanDefinitionRegistry registry,
                                      boolean useDefaultFilters)
Create a new ClassPathBeanDefinitionScanner 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
useDefaultFilters - whether to include the default filters for the @Component, @Repository, @Service, and @Controller stereotype annotations.
See Also:
ClassPathScanningCandidateComponentProvider.setResourceLoader(org.springframework.core.io.ResourceLoader)
Method Detail

setBeanDefinitionDefaults

public void setBeanDefinitionDefaults(BeanDefinitionDefaults beanDefinitionDefaults)
Set the defaults to use for detected beans.

See Also:
BeanDefinitionDefaults

setAutowireCandidatePatterns

public void setAutowireCandidatePatterns(String[] autowireCandidatePatterns)
Set the name-matching patterns for determining autowire candidates.

Parameters:
autowireCandidatePatterns - the patterns to match against

setBeanNameGenerator

public void setBeanNameGenerator(BeanNameGenerator beanNameGenerator)
Set the BeanNameGenerator to use for detected bean classes.

Default is a AnnotationBeanNameGenerator.


setScopeMetadataResolver

public void setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)
Set the ScopeMetadataResolver to use for detected bean classes. Note that this will override any custom "scopedProxyMode" setting.

The default is an AnnotationScopeMetadataResolver.

See Also:
setScopedProxyMode(org.springframework.context.annotation.ScopedProxyMode)

setScopedProxyMode

public void setScopedProxyMode(ScopedProxyMode scopedProxyMode)
Specify the proxy behavior for non-singleton scoped beans. Note that this will override any custom "scopeMetadataResolver" setting.

The default is ScopedProxyMode.NO.

See Also:
setScopeMetadataResolver(org.springframework.context.annotation.ScopeMetadataResolver)

setIncludeAnnotationConfig

public void setIncludeAnnotationConfig(boolean includeAnnotationConfig)
Specify whether to register annotation config post-processors.

The default is to register the post-processors. Turn this off to be able to ignore the annotations or to process them differently.


scan

public int scan(String... basePackages)
Perform a scan within the specified base packages.

Parameters:
basePackages - the packages to check for annotated classes
Returns:
number of beans registered

doScan

protected Set<BeanDefinitionHolder> doScan(String... basePackages)
Perform a scan within the specified base packages, returning the registered bean definitions.

This method does not register an annotation config processor but rather leaves this up to the caller.

Parameters:
basePackages - the packages to check for annotated classes
Returns:
number of beans registered

The Spring Framework

Copyright © 2002-2007 The Spring Framework.