org.springframework.beans.factory
Class BeanFactoryUtils

java.lang.Object
  extended by org.springframework.beans.factory.BeanFactoryUtils

public abstract class BeanFactoryUtils
extends Object

Convenience methods operating on bean factories, in particular on the ListableBeanFactory interface.

Returns bean counts, bean names or bean instances, taking into account the nesting hierarchy of a bean factory (which the methods defined on the ListableBeanFactory interface don't, in contrast to the methods defined on the BeanFactory interface).

Since:
04.07.2003
Author:
Rod Johnson, Juergen Hoeller

Constructor Summary
BeanFactoryUtils()
           
 
Method Summary
static String[] beanNamesForTypeIncludingAncestors(ListableBeanFactory lbf, Class type)
          Get all bean names for the given type, including those defined in ancestor factories.
static String[] beanNamesForTypeIncludingAncestors(ListableBeanFactory lbf, Class type, boolean includePrototypes, boolean includeFactoryBeans)
          Get all bean names for the given type, including those defined in ancestor factories.
static String[] beanNamesIncludingAncestors(ListableBeanFactory lbf)
          Return all bean names in the factory, including ancestor factories.
static String[] beanNamesIncludingAncestors(ListableBeanFactory lbf, Class type)
          Deprecated. in favor of beanNamesForTypeIncludingAncestors. This method will be removed as of Spring 2.0.
static Object beanOfType(ListableBeanFactory lbf, Class type)
          Return a single bean of the given type or subtypes, not looking in ancestor factories.
static Object beanOfType(ListableBeanFactory lbf, Class type, boolean includePrototypes, boolean includeFactoryBeans)
          Return a single bean of the given type or subtypes, not looking in ancestor factories.
static Object beanOfTypeIncludingAncestors(ListableBeanFactory lbf, Class type)
          Return a single bean of the given type or subtypes, also picking up beans defined in ancestor bean factories if the current bean factory is a HierarchicalBeanFactory.
static Object beanOfTypeIncludingAncestors(ListableBeanFactory lbf, Class type, boolean includePrototypes, boolean includeFactoryBeans)
          Return a single bean of the given type or subtypes, also picking up beans defined in ancestor bean factories if the current bean factory is a HierarchicalBeanFactory.
static Map beansOfTypeIncludingAncestors(ListableBeanFactory lbf, Class type)
          Return all beans of the given type or subtypes, also picking up beans defined in ancestor bean factories if the current bean factory is a HierarchicalBeanFactory.
static Map beansOfTypeIncludingAncestors(ListableBeanFactory lbf, Class type, boolean includePrototypes, boolean includeFactoryBeans)
          Return all beans of the given type or subtypes, also picking up beans defined in ancestor bean factories if the current bean factory is a HierarchicalBeanFactory.
static int countBeansIncludingAncestors(ListableBeanFactory lbf)
          Count all bean definitions in any hierarchy in which this factory participates.
static boolean isFactoryDereference(String name)
          Return whether the given name is a factory dereference (beginning with the factory dereference prefix).
static String transformedBeanName(String name)
          Return the bean name, stripping out the factory dereference prefix if necessary.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BeanFactoryUtils

public BeanFactoryUtils()
Method Detail

isFactoryDereference

public static boolean isFactoryDereference(String name)
Return whether the given name is a factory dereference (beginning with the factory dereference prefix).

See Also:
BeanFactory.FACTORY_BEAN_PREFIX

transformedBeanName

public static String transformedBeanName(String name)
Return the bean name, stripping out the factory dereference prefix if necessary.


countBeansIncludingAncestors

public static int countBeansIncludingAncestors(ListableBeanFactory lbf)
Count all bean definitions in any hierarchy in which this factory participates. Includes counts of ancestor bean factories.

Beans that are "overridden" (specified in a descendant factory with the same name) are only counted once.

Parameters:
lbf - the bean factory
Returns:
count of beans including those defined in ancestor factories

beanNamesIncludingAncestors

public static String[] beanNamesIncludingAncestors(ListableBeanFactory lbf)
Return all bean names in the factory, including ancestor factories.

Parameters:
lbf - the bean factory
Returns:
the array of matching bean names, or an empty array if none

beanNamesIncludingAncestors

public static String[] beanNamesIncludingAncestors(ListableBeanFactory lbf,
                                                   Class type)
Deprecated. in favor of beanNamesForTypeIncludingAncestors. This method will be removed as of Spring 2.0.

Get all bean names for the given type, including those defined in ancestor factories. Will return unique names in case of overridden bean definitions.

Does not consider objects created by FactoryBeans but rather the FactoryBean classes themselves, avoiding instantiation of any beans. Use beanNamesForTypeIncludingAncestors to match objects created by FactoryBeans.

Parameters:
lbf - the bean factory
type - the type that beans must match
Returns:
the array of matching bean names, or an empty array if none
See Also:
beanNamesForTypeIncludingAncestors(org.springframework.beans.factory.ListableBeanFactory, java.lang.Class)

beanNamesForTypeIncludingAncestors

public static String[] beanNamesForTypeIncludingAncestors(ListableBeanFactory lbf,
                                                          Class type)
Get all bean names for the given type, including those defined in ancestor factories. Will return unique names in case of overridden bean definitions.

Does consider objects created by FactoryBeans, which means that FactoryBeans will get initialized. If the object created by the FactoryBean doesn't match, the raw FactoryBean itself will be matched against the type.

This version of beanNamesForTypeIncludingAncestors automatically includes prototypes and FactoryBeans.

Parameters:
lbf - the bean factory
type - the type that beans must match
Returns:
the array of matching bean names, or an empty array if none

beanNamesForTypeIncludingAncestors

public static String[] beanNamesForTypeIncludingAncestors(ListableBeanFactory lbf,
                                                          Class type,
                                                          boolean includePrototypes,
                                                          boolean includeFactoryBeans)
Get all bean names for the given type, including those defined in ancestor factories. Will return unique names in case of overridden bean definitions.

Does consider objects created by FactoryBeans if the "includeFactoryBeans" flag is set, which means that FactoryBeans will get initialized. If the object created by the FactoryBean doesn't match, the raw FactoryBean itself will be matched against the type. If "includeFactoryBeans" is not set, only raw FactoryBeans will be checked (which doesn't require initialization of each FactoryBean).

Parameters:
lbf - the bean factory
includePrototypes - whether to include prototype beans too or just singletons (also applies to FactoryBeans)
includeFactoryBeans - whether to include objects created by FactoryBeans (or by factory methods with a "factory-bean" reference) too, or just conventional beans. Note that FactoryBeans need to be initialized to determine their type: So be aware that passing in "true" for this flag will initialize FactoryBeans (and "factory-bean" references).
type - the type that beans must match
Returns:
the array of matching bean names, or an empty array if none

beansOfTypeIncludingAncestors

public static Map beansOfTypeIncludingAncestors(ListableBeanFactory lbf,
                                                Class type)
                                         throws BeansException
Return all beans of the given type or subtypes, also picking up beans defined in ancestor bean factories if the current bean factory is a HierarchicalBeanFactory. The returned Map will only contain beans of this type.

Does consider objects created by FactoryBeans, which means that FactoryBeans will get initialized. If the object created by the FactoryBean doesn't match, the raw FactoryBean itself will be matched against the type.

Parameters:
lbf - the bean factory
type - type of bean to match
Returns:
the Map of matching bean instances, or an empty Map if none
Throws:
BeansException - if a bean could not be created

beansOfTypeIncludingAncestors

public static Map beansOfTypeIncludingAncestors(ListableBeanFactory lbf,
                                                Class type,
                                                boolean includePrototypes,
                                                boolean includeFactoryBeans)
                                         throws BeansException
Return all beans of the given type or subtypes, also picking up beans defined in ancestor bean factories if the current bean factory is a HierarchicalBeanFactory. The returned Map will only contain beans of this type.

Does consider objects created by FactoryBeans if the "includeFactoryBeans" flag is set, which means that FactoryBeans will get initialized. If the object created by the FactoryBean doesn't match, the raw FactoryBean itself will be matched against the type. If "includeFactoryBeans" is not set, only raw FactoryBeans will be checked (which doesn't require initialization of each FactoryBean).

Parameters:
lbf - the bean factory
type - type of bean to match
includePrototypes - whether to include prototype beans too or just singletons (also applies to FactoryBeans)
includeFactoryBeans - whether to include objects created by FactoryBeans (or by factory methods with a "factory-bean" reference) too, or just conventional beans. Note that FactoryBeans need to be initialized to determine their type: So be aware that passing in "true" for this flag will initialize FactoryBeans (and "factory-bean" references).
Returns:
the Map of matching bean instances, or an empty Map if none
Throws:
BeansException - if a bean could not be created

beanOfTypeIncludingAncestors

public static Object beanOfTypeIncludingAncestors(ListableBeanFactory lbf,
                                                  Class type)
                                           throws BeansException
Return a single bean of the given type or subtypes, also picking up beans defined in ancestor bean factories if the current bean factory is a HierarchicalBeanFactory. Useful convenience method when we expect a single bean and don't care about the bean name.

Does consider objects created by FactoryBeans, which means that FactoryBeans will get initialized. If the object created by the FactoryBean doesn't match, the raw FactoryBean itself will be matched against the type.

This version of beanOfTypeIncludingAncestors automatically includes prototypes and FactoryBeans.

Parameters:
lbf - the bean factory
type - type of bean to match
Returns:
the matching bean instance
Throws:
NoSuchBeanDefinitionException - if 0 or more than 1 beans of the given type were found
NoSuchBeanDefinitionException - if no single bean could be found for the given type
BeansException - if the bean could not be created

beanOfTypeIncludingAncestors

public static Object beanOfTypeIncludingAncestors(ListableBeanFactory lbf,
                                                  Class type,
                                                  boolean includePrototypes,
                                                  boolean includeFactoryBeans)
                                           throws BeansException
Return a single bean of the given type or subtypes, also picking up beans defined in ancestor bean factories if the current bean factory is a HierarchicalBeanFactory. Useful convenience method when we expect a single bean and don't care about the bean name.

Does consider objects created by FactoryBeans if the "includeFactoryBeans" flag is set, which means that FactoryBeans will get initialized. If the object created by the FactoryBean doesn't match, the raw FactoryBean itself will be matched against the type. If "includeFactoryBeans" is not set, only raw FactoryBeans will be checked (which doesn't require initialization of each FactoryBean).

Parameters:
lbf - the bean factory
type - type of bean to match
includePrototypes - whether to include prototype beans too or just singletons (also applies to FactoryBeans)
includeFactoryBeans - whether to include objects created by FactoryBeans (or by factory methods with a "factory-bean" reference) too, or just conventional beans. Note that FactoryBeans need to be initialized to determine their type: So be aware that passing in "true" for this flag will initialize FactoryBeans (and "factory-bean" references).
Returns:
the matching bean instance
Throws:
NoSuchBeanDefinitionException - if 0 or more than 1 beans of the given type were found
NoSuchBeanDefinitionException - if no single bean could be found for the given type
BeansException - if the bean could not be created

beanOfType

public static Object beanOfType(ListableBeanFactory lbf,
                                Class type)
                         throws BeansException
Return a single bean of the given type or subtypes, not looking in ancestor factories. Useful convenience method when we expect a single bean and don't care about the bean name.

Does consider objects created by FactoryBeans, which means that FactoryBeans will get initialized. If the object created by the FactoryBean doesn't match, the raw FactoryBean itself will be matched against the type.

This version of beanOfType automatically includes prototypes and FactoryBeans.

Parameters:
lbf - the bean factory
type - type of bean to match
Returns:
the matching bean instance
Throws:
NoSuchBeanDefinitionException - if 0 or more than 1 beans of the given type were found
NoSuchBeanDefinitionException - if no single bean could be found for the given type
BeansException - if the bean could not be created

beanOfType

public static Object beanOfType(ListableBeanFactory lbf,
                                Class type,
                                boolean includePrototypes,
                                boolean includeFactoryBeans)
                         throws BeansException
Return a single bean of the given type or subtypes, not looking in ancestor factories. Useful convenience method when we expect a single bean and don't care about the bean name.

Does consider objects created by FactoryBeans if the "includeFactoryBeans" flag is set, which means that FactoryBeans will get initialized. If the object created by the FactoryBean doesn't match, the raw FactoryBean itself will be matched against the type. If "includeFactoryBeans" is not set, only raw FactoryBeans will be checked (which doesn't require initialization of each FactoryBean).

Parameters:
lbf - the bean factory
type - type of bean to match
includePrototypes - whether to include prototype beans too or just singletons (also applies to FactoryBeans)
includeFactoryBeans - whether to include objects created by FactoryBeans (or by factory methods with a "factory-bean" reference) too, or just conventional beans. Note that FactoryBeans need to be initialized to determine their type: So be aware that passing in "true" for this flag will initialize FactoryBeans (and "factory-bean" references).
Returns:
the matching bean instance
Throws:
NoSuchBeanDefinitionException - if 0 or more than 1 beans of the given type were found
NoSuchBeanDefinitionException - if no single bean could be found for the given type
BeansException - if the bean could not be created


Copyright (c) 2002-2006 The Spring Framework Project.