public interface BeanContext
Definition of an interface that allows access to the beans managed by the dependency injection framework.
This interface serves as the top-level entry point into the dependency
injection framework. It allows querying beans from a specified
or a default BeanStore
BeanStore
by
name or by type. Listing the available beans is also possible.
When objects are dynamically created, class loader issues have to be taken
into account. A BeanContext
allows the registration of class
loaders by name. In the configuration, it can then be specified, which bean
is to be created using which class loader. For the context class loader there
is a special constant.
Modifier and Type | Method and Description |
---|---|
void |
addBeanCreationListener(BeanCreationListener l)
Adds a new
BeanCreationListener to this context. |
Set<Class<?>> |
beanClasses()
Returns a set with the classes of all beans defined in the default
BeanStore (or one of its parents). |
Set<Class<?>> |
beanClasses(BeanStore store)
Returns a set with the classes of all beans defined in the given
BeanStore . |
String |
beanNameFor(BeanProvider beanProvider)
Returns the name of the bean that is managed by the specified
BeanProvider , starting search with the default BeanStore . |
String |
beanNameFor(BeanProvider beanProvider,
BeanStore store)
Returns the name of the bean that is managed by the specified
BeanProvider , starting search in the specified BeanStore . |
Set<String> |
beanNames()
Returns a set with the names of all beans defined in the default
BeanStore . |
Set<String> |
beanNames(BeanStore store)
Returns a set with the names of all beans defined in the given
BeanStore . |
void |
close()
Closes this bean context.
|
boolean |
containsBean(Class<?> beanClass)
Checks whether the default
BeanStore contains a bean with
the given class. |
boolean |
containsBean(Class<?> beanClass,
BeanStore store)
Checks whether the specified
BeanStore contains a bean
with the given class. |
boolean |
containsBean(String name)
Checks whether the default
BeanStore contains a bean with
the given name. |
boolean |
containsBean(String name,
BeanStore store)
Checks whether the specified
BeanStore contains a bean
with the given name. |
<T> T |
getBean(Class<T> beanCls)
Returns the bean with the specified class from the default
BeanStore . |
<T> T |
getBean(Class<T> beanCls,
BeanStore store)
Returns the bean with the specified class from the given
BeanStore . |
Object |
getBean(String name)
Returns the bean with the specified name from the default
BeanStore . |
Object |
getBean(String name,
BeanStore store)
Returns the bean with the specified name from the given
BeanStore . |
ClassLoaderProvider |
getClassLoaderProvider()
Returns the
ClassLoaderProvider used by this context. |
BeanStore |
getDefaultBeanStore()
Returns the default bean store.
|
void |
removeBeanCreationListener(BeanCreationListener l)
Removes the specified
BeanCreationListener from this context. |
void |
setClassLoaderProvider(ClassLoaderProvider clp)
Sets the
ClassLoaderProvider to be used by this context. |
void |
setDefaultBeanStore(BeanStore store)
Sets the default bean store.
|
Object getBean(String name)
BeanStore
.name
- the name of the bean to be retrievedInjectionException
- if the bean cannot be resolved or its creation
or initialization causes an errorObject getBean(String name, BeanStore store)
BeanStore
. This method can be used if a child bean store
of the default bean store is to be accessed.name
- the name of the bean to be retrievedstore
- the BeanStore
to queryInjectionException
- if the bean cannot be resolved or its creation
or initialization causes an errorIllegalArgumentException
- if the passed in bean store is null<T> T getBean(Class<T> beanCls)
BeanStore
. An implementation of this method has to
iterate over the beans defined in the bean store to find out, whether the
specified class is assignable from their class. Then the first fitting
bean will be returned. So it is for instance possible to query for an
interface and find a bean that is a concrete implementation of this
interface. If there are multiple bean definitions that are compatible
with this class, it is up to a concrete implementation of this interface
to choose one. Defining beans based on a class (or interface) allows to
abstract from the concrete naming of beans and focuses more on the beans'
semantics.T
- the type of the bean to be fetchedbeanCls
- the class of the bean to be fetchedInjectionException
- if the bean cannot be resolved or its creation
or initialization causes an error<T> T getBean(Class<T> beanCls, BeanStore store)
BeanStore
. Works like the overloaded method, but operates
on the given bean store.T
- the type of the bean to be fetchedbeanCls
- the class of the bean to be fetchedstore
- the BeanStore
to useInjectionException
- if the bean cannot be resolved or its creation
or initialization causes an errorIllegalArgumentException
- if the passed in bean store is nullSet<String> beanNames()
BeanStore
.Set<String> beanNames(BeanStore store)
BeanStore
. This list will also contain beans that are
defined in one of the bean store's parents.store
- the bean store (must not be null)IllegalArgumentException
- if the passed in bean store is nullSet<Class<?>> beanClasses()
BeanStore
(or one of its parents).Set<Class<?>> beanClasses(BeanStore store)
BeanStore
. This list will also contain beans that are
defined in one of the bean store's parents.store
- the bean store (must not be null)IllegalArgumentException
- if the passed in bean store is nullboolean containsBean(String name)
BeanStore
contains a bean with
the given name. If necessary the bean store's parents will also be
searched.name
- the name of the searched beanboolean containsBean(String name, BeanStore store)
BeanStore
contains a bean
with the given name. If necessary the bean store's parents will also be
searched.name
- the name of the searched beanstore
- the bean storeboolean containsBean(Class<?> beanClass)
BeanStore
contains a bean with
the given class. If necessary the bean store's parents will also be
searched.beanClass
- the class of the searched beanboolean containsBean(Class<?> beanClass, BeanStore store)
BeanStore
contains a bean
with the given class. If necessary the bean store's parents will also be
searched.beanClass
- the class of the searched beanstore
- the bean storeBeanStore getDefaultBeanStore()
void setDefaultBeanStore(BeanStore store)
store
- the new default bean storeString beanNameFor(BeanProvider beanProvider)
BeanProvider
, starting search with the default BeanStore
.beanProvider
- the BeanProvider
BeanProvider
is registered in
one of the accessible bean stores or null if it cannot be
resolvedbeanNameFor(BeanProvider, BeanStore)
String beanNameFor(BeanProvider beanProvider, BeanStore store)
BeanProvider
, starting search in the specified BeanStore
. This
method can be used for performing a "reverse lookup": when a bean
provider is known, but the corresponding bean name is searched. A use
case would be the processing of a BeanCreationEvent
. The event
object contains the BeanProvider
that created the bean, but the
name of this bean is not part of the event.beanProvider
- the BeanProvider
store
- the BeanStore
BeanProvider
is registered in
one of the accessible bean stores or null if it cannot be
resolvedvoid addBeanCreationListener(BeanCreationListener l)
BeanCreationListener
to this context. This listener
will receive notifications about newly created beans.l
- the listener to be added (must not be null)IllegalArgumentException
- if the listener is nullvoid removeBeanCreationListener(BeanCreationListener l)
BeanCreationListener
from this context. If
the listener is not registered, this method has no effect.l
- the listener to removevoid close()
BeanStore
associated with this context is
not closed by this method (this is because a BeanStore
could be
shared by multiple contexts, and there is not necessary a 1:1
relationship between a BeanStore
and a BeanContext
).ClassLoaderProvider getClassLoaderProvider()
ClassLoaderProvider
used by this context.ClassLoaderProvider
void setClassLoaderProvider(ClassLoaderProvider clp)
ClassLoaderProvider
to be used by this context. This
object is needed when classes have to be loaded through reflection.clp
- the ClassLoaderProvider
Copyright © 2016 The JGUIraffe Team. All rights reserved.