Class TieringPicoContainer

    • 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 creates Cached instances, such as for example Caching. 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​(ComponentMonitor monitor,
                                    PicoContainer parent)
        Creates a new container with the AdaptingInjection using a custom ComponentMonitor
        Parameters:
        monitor - the ComponentMonitor to use
        parent - 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 use
        lifecycleStrategy - 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 a AdaptingBehavior and no parent container.
    • Method Detail

      • 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 interface MutablePicoContainer
        Overrides:
        makeChildContainer in class DefaultPicoContainer
        Returns:
        the new child container.