Package org.picocontainer.containers
Class TieringPicoContainer
- java.lang.Object
-
- org.picocontainer.DefaultPicoContainer
-
- org.picocontainer.containers.TieringPicoContainer
-
- All Implemented Interfaces:
java.io.Serializable
,ComponentMonitorStrategy
,Converting
,Disposable
,MutablePicoContainer
,PicoContainer
,Startable
public class TieringPicoContainer extends DefaultPicoContainer
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.picocontainer.DefaultPicoContainer
DefaultPicoContainer.KnowsContainerAdapter<T>, DefaultPicoContainer.LateInstance
-
-
Field Summary
-
Fields inherited from class org.picocontainer.DefaultPicoContainer
componentFactory, componentMonitor, lifecycleStrategy, orderedComponentAdapters
-
-
Constructor Summary
Constructors Constructor Description TieringPicoContainer()
Creates a new container with aAdaptingBehavior
and no parent container.TieringPicoContainer(ComponentFactory componentFactory)
Creates a new container with a custom ComponentFactory and no parent container.TieringPicoContainer(ComponentFactory componentFactory, LifecycleStrategy lifecycleStrategy, PicoContainer parent)
Creates a new container with a custom ComponentFactory, LifecycleStrategy for instance registration, and a parent container.TieringPicoContainer(ComponentFactory componentFactory, LifecycleStrategy lifecycleStrategy, PicoContainer parent, ComponentMonitor componentMonitor)
TieringPicoContainer(ComponentMonitor monitor)
Creates a new container with the AdaptingInjection using a custom ComponentMonitorTieringPicoContainer(ComponentMonitor monitor, LifecycleStrategy lifecycleStrategy, PicoContainer parent)
Creates a new container with the AdaptingInjection using a custom ComponentMonitor and lifecycle strategyTieringPicoContainer(ComponentMonitor monitor, PicoContainer parent)
Creates a new container with the AdaptingInjection using a custom ComponentMonitorTieringPicoContainer(LifecycleStrategy lifecycleStrategy, PicoContainer parent)
Creates a new container with the AdaptingInjection using a custom lifecycle strategyTieringPicoContainer(PicoContainer parent)
Creates a new container with a (caching)AdaptingInjection
and a parent container.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PicoContainer
getParent()
Retrieve the parent container of this container.MutablePicoContainer
makeChildContainer()
Make a child container, using both the same implementation of MutablePicoContainer as the parent and identical behaviors as well.-
Methods inherited from class org.picocontainer.DefaultPicoContainer
accept, addAdapter, addAdapter, addAdapterInternal, addChildContainer, addComponent, addComponent, addConfig, as, change, changeMonitor, currentMonitor, decorateComponent, dispose, getComponent, getComponent, getComponent, getComponent, getComponent, getComponentAdapter, getComponentAdapter, getComponentAdapter, getComponentAdapters, getComponentAdapters, getComponentAdapters, getComponentKeyToAdapterCache, getComponents, getComponents, getConverters, getLifecycleState, getModifiableComponentAdapterList, getName, getOrderedComponentAdapters, instantiateComponentAsIsStartable, potentiallyStartAdapter, removeChildContainer, removeComponent, removeComponentByInstance, setLifecycleState, setName, start, stop, toString
-
-
-
-
Constructor Detail
-
TieringPicoContainer
public TieringPicoContainer(ComponentFactory componentFactory, LifecycleStrategy lifecycleStrategy, PicoContainer parent)
Creates a new container with a custom ComponentFactory, LifecycleStrategy for instance registration, and a parent container. Important note about caching: If you intend the components to be cached, you should pass in a factory that createsCached
instances, such as for exampleCaching
. Caching can delegate to other ComponentAdapterFactories.- Parameters:
componentFactory
- the factory to use for creation of ComponentAdapters.lifecycleStrategy
- the lifecycle strategy chosen for registered instance (not implementations!)parent
- the parent container (used for component dependency lookups).
-
TieringPicoContainer
public TieringPicoContainer(ComponentFactory componentFactory, LifecycleStrategy lifecycleStrategy, PicoContainer parent, ComponentMonitor componentMonitor)
-
TieringPicoContainer
public TieringPicoContainer(ComponentMonitor monitor, PicoContainer parent)
Creates a new container with the AdaptingInjection using a custom ComponentMonitor- Parameters:
monitor
- the ComponentMonitor to useparent
- the parent container (used for component dependency lookups).
-
TieringPicoContainer
public TieringPicoContainer(ComponentMonitor monitor, LifecycleStrategy lifecycleStrategy, PicoContainer parent)
Creates a new container with the AdaptingInjection using a custom ComponentMonitor and lifecycle strategy- Parameters:
monitor
- the ComponentMonitor to uselifecycleStrategy
- the lifecycle strategy to use.parent
- the parent container (used for component dependency lookups).
-
TieringPicoContainer
public TieringPicoContainer(LifecycleStrategy lifecycleStrategy, PicoContainer parent)
Creates a new container with the AdaptingInjection using a custom lifecycle strategy- Parameters:
lifecycleStrategy
- the lifecycle strategy to use.parent
- the parent container (used for component dependency lookups).
-
TieringPicoContainer
public TieringPicoContainer(ComponentFactory componentFactory)
Creates a new container with a custom ComponentFactory and no parent container.- Parameters:
componentFactory
- the ComponentFactory to use.
-
TieringPicoContainer
public TieringPicoContainer(ComponentMonitor monitor)
Creates a new container with the AdaptingInjection using a custom ComponentMonitor- Parameters:
monitor
- the ComponentMonitor to use
-
TieringPicoContainer
public TieringPicoContainer(PicoContainer parent)
Creates a new container with a (caching)AdaptingInjection
and a parent container.- Parameters:
parent
- the parent container (used for component dependency lookups).
-
TieringPicoContainer
public TieringPicoContainer()
Creates a new container with aAdaptingBehavior
and no parent container.
-
-
Method Detail
-
getParent
public PicoContainer getParent()
Description copied from class:DefaultPicoContainer
Retrieve the parent container of this container.- Specified by:
getParent
in interfacePicoContainer
- Overrides:
getParent
in classDefaultPicoContainer
- Returns:
- a
PicoContainer
instance, ornull
if this container does not have a parent.
-
makeChildContainer
public MutablePicoContainer makeChildContainer()
Description copied from interface:MutablePicoContainer
Make a child container, using both the same implementation of MutablePicoContainer as the parent and identical behaviors as well. It will have a reference to this as parent. This will list the resulting MPC as a child. Lifecycle events will be cascaded from parent to child as a consequence of this.Note that for long-lived parent containers, you need to unregister child containers made with this call before disposing or you will leak memory. (Experience speaking here! )
Incorrect Example:
MutablePicoContainer parent = new PicoBuilder().withCaching().withLifecycle().build(); MutablePicoContainer child = parent.makeChildContainer(); child = null; //Child still retains in memory because parent still holds reference.
Correct Example:
MutablePicoContainer parent = new PicoBuilder().withCaching().withLifecycle().build(); MutablePicoContainer child = parent.makeChildContainer(); parent.removeChildContainer(child); //Remove the bi-directional references. child = null;
- Specified by:
makeChildContainer
in interfaceMutablePicoContainer
- Overrides:
makeChildContainer
in classDefaultPicoContainer
- Returns:
- the new child container.
-
-