org.springframework.beans.factory
Class BeanFactoryUtils

java.lang.Object
  extended byorg.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[] beanNamesIncludingAncestors(ListableBeanFactory lbf)
          Return all bean names in the factory, including ancestor factories.
static String[] beanNamesIncludingAncestors(ListableBeanFactory lbf, Class type)
          Get all bean names for the given type, including those defined in ancestor factories.
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 bean names, or an empty array if none

beanNamesIncludingAncestors

public static String[] beanNamesIncludingAncestors(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 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 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 but rather the FactoryBean classes themselves, which means that FactoryBeans will get instantiated.

Parameters:
lbf - the bean factory
type - the type that beans must match
Returns:
the array of 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 return list will only contain beans of this type.

Parameters:
lbf - the bean factory
type - type of bean to match
Returns:
the Map of 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 return list will only contain beans of this type.

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 FactoryBeans too or just normal beans
Returns:
the Map of 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.

This version of beanOfType automatically includes prototypes and FactoryBeans.

Parameters:
lbf - the bean factory
type - type of bean to match
Returns:
the Map of bean instances, or an empty Map if none
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.

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 FactoryBeans too or just normal beans
Returns:
the Map of bean instances, or an empty Map if none
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.

This version of beanOfType automatically includes prototypes and FactoryBeans.

Parameters:
lbf - the bean factory
type - type of bean to match
Returns:
the Map of bean instances, or an empty Map if none
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.

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 FactoryBeans too or just normal beans
Returns:
the Map of bean instances, or an empty Map if none
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) 2003-2004 The Spring Framework Project.