Top Description Methods
org.springframework.beans.factory.config

public Interface SingletonBeanRegistry

Known Direct Subinterfaces
org.springframework.beans.factory.config.ConfigurableBeanFactory
Known Direct Implementers
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry
Imports
org.springframework.lang.Nullable

Interface that defines a registry for shared bean instances. Can be implemented by org.springframework.beans.factory.BeanFactory implementations in order to expose their singleton management facility in a uniform manner.

The ConfigurableBeanFactory interface extends this interface.

Author
Juergen Hoeller
Since
2.0
See Also
ConfigurableBeanFactory, org.springframework.beans.factory.support.DefaultSingletonBeanRegistry, org.springframework.beans.factory.support.AbstractBeanFactory

Method Summary

Modifier and TypeMethod and Description
public boolean

Returns:

if this bean factory contains a singleton instance with the given name
containsSingleton
(String
the name of the bean to look for
beanName
)

Check if this registry contains a singleton instance with the given name.

public Object

Returns:

the registered singleton object, or null if none found
getSingleton
(String
the name of the bean to look for
beanName
)

Return the (raw) singleton object registered under the given name.

public int

Returns:

the number of singleton beans
getSingletonCount
()

Return the number of singleton beans registered in this registry.

public Object

Returns:

the mutex object (never null)
getSingletonMutex
()

Return the singleton mutex used by this registry (for external collaborators).

public String[]

Returns:

the list of names as a String array (never null)
getSingletonNames
()

Return the names of singleton beans registered in this registry.

public void
registerSingleton(String
the name of the bean
beanName
,
Object
the existing singleton object
singletonObject
)

Register the given existing object as singleton in the bean registry, under the given bean name.

Method Detail

containsSingletonback to summary
public boolean containsSingleton(String beanName)

Check if this registry contains a singleton instance with the given name.

Only checks already instantiated singletons; does not return true for singleton bean definitions which have not been instantiated yet.

The main purpose of this method is to check manually registered singletons (see registerSingleton). Can also be used to check whether a singleton defined by a bean definition has already been created.

To check whether a bean factory contains a bean definition with a given name, use ListableBeanFactory's containsBeanDefinition. Calling both containsBeanDefinition and containsSingleton answers whether a specific bean factory contains a local bean instance with the given name.

Use BeanFactory's containsBean for general checks whether the factory knows about a bean with a given name (whether manually registered singleton instance or created by bean definition), also checking ancestor factories.

Note

This lookup method is not aware of FactoryBean prefixes or aliases. You need to resolve the canonical bean name first before checking the singleton status.

Parameters
beanName:String

the name of the bean to look for

Returns:boolean

if this bean factory contains a singleton instance with the given name

See Also
registerSingleton, org.springframework.beans.factory.ListableBeanFactory#containsBeanDefinition, org.springframework.beans.factory.BeanFactory#containsBean
getSingletonback to summary
public Object getSingleton(String beanName)

Return the (raw) singleton object registered under the given name.

Only checks already instantiated singletons; does not return an Object for singleton bean definitions which have not been instantiated yet.

The main purpose of this method is to access manually registered singletons (see registerSingleton). Can also be used to access a singleton defined by a bean definition that already been created, in a raw fashion.

Note

This lookup method is not aware of FactoryBean prefixes or aliases. You need to resolve the canonical bean name first before obtaining the singleton instance.

Parameters
beanName:String

the name of the bean to look for

Returns:Object

the registered singleton object, or null if none found

Annotations
@Nullable
See Also
ConfigurableListableBeanFactory#getBeanDefinition
getSingletonCountback to summary
public int getSingletonCount()

Return the number of singleton beans registered in this registry.

Only checks already instantiated singletons; does not count singleton bean definitions which have not been instantiated yet.

The main purpose of this method is to check manually registered singletons (see registerSingleton). Can also be used to count the number of singletons defined by a bean definition that have already been created.

Returns:int

the number of singleton beans

See Also
registerSingleton, org.springframework.beans.factory.support.BeanDefinitionRegistry#getBeanDefinitionCount, org.springframework.beans.factory.ListableBeanFactory#getBeanDefinitionCount
getSingletonMutexback to summary
public Object getSingletonMutex()

Return the singleton mutex used by this registry (for external collaborators).

Returns:Object

the mutex object (never null)

Since
4.2
getSingletonNamesback to summary
public String[] getSingletonNames()

Return the names of singleton beans registered in this registry.

Only checks already instantiated singletons; does not return names for singleton bean definitions which have not been instantiated yet.

The main purpose of this method is to check manually registered singletons (see registerSingleton). Can also be used to check which singletons defined by a bean definition have already been created.

Returns:String[]

the list of names as a String array (never null)

See Also
registerSingleton, org.springframework.beans.factory.support.BeanDefinitionRegistry#getBeanDefinitionNames, org.springframework.beans.factory.ListableBeanFactory#getBeanDefinitionNames
registerSingletonback to summary
public void registerSingleton(String beanName, Object singletonObject)

Register the given existing object as singleton in the bean registry, under the given bean name.

The given instance is supposed to be fully initialized; the registry will not perform any initialization callbacks (in particular, it won't call InitializingBean's afterPropertiesSet method). The given instance will not receive any destruction callbacks (like DisposableBean's destroy method) either.

When running within a full BeanFactory: Register a bean definition instead of an existing instance if your bean is supposed to receive initialization and/or destruction callbacks.

Typically invoked during registry configuration, but can also be used for runtime registration of singletons. As a consequence, a registry implementation should synchronize singleton access; it will have to do this anyway if it supports a BeanFactory's lazy initialization of singletons.

Parameters
beanName:String

the name of the bean

singletonObject:Object

the existing singleton object

See Also
org.springframework.beans.factory.InitializingBean#afterPropertiesSet, org.springframework.beans.factory.DisposableBean#destroy, org.springframework.beans.factory.support.BeanDefinitionRegistry#registerBeanDefinition